perm filename E.UPD[UP,DOC]34 blob
sn#531391 filedate 1980-08-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 All information in this file is included in E.ALS[UP,DOC].
C00003 00003 1975
C00013 00004 1976
C00051 00005 1977
C00092 00006 1978
C00217 ENDMK
C⊗;
All information in this file is included in E.ALS[UP,DOC].
This file is merely a HISTORY of the changes to E.
Contained herein are past news items that have now been merged
into the E manual. Everything mentioned in this file has been
documented in the E manual E.ALS[UP,DOC] (the "?" file).
Page references in this file refer to pages in E.ALS[UP,DOC],
but these references are not guaranteed to be currently accurate.
1975
∂1975 -- UDP files are remembered on file switching (maybe almost right).
∂1975 -- Formerly fatal errors kludged around.
Some formerly fatal errors no longer cause E to HALT, although the
fix may not always work and E may crash later after all.
∂6/75 -- The main timing problem on entering the line editor is fixed.
Now you can type ahead characters meant for the line editor without
waiting for the line editor to be set up after you have given a
command to edit a particular line. The fix involved a system modification.
∂6/75 -- Unexpected errors encountered by E are now automatically recorded.
An FBI program reports most of the mal-functionings to ALS when you
get into trouble and you may hear from him for more details if he
thinks that he can do something for you (or vice versa).
∂6/75 -- /F and /F/R modes break long pages up by inserting FFs.
See p. 20.
∂7/75 -- Bug in formatting SOS files fixed.
A recent bug in formatting SOS files has been fixed. Users are still
advised to repage such files with the /F switch if this is a
reasonable thing to do.
∂7/75 -- α<cr> restores previous line editor line when typing filename.
When you get the message "Try again" after specifying a file name
with some error, it is now possible to invoke the <control><cr> line
editor command to recall what you had typed so that you need not type
everything over again. Most of the time this does not work but it
does here.
∂7/75 -- The α* and αβ* commands repeat the last search command given.
See p. 13.
∂7/75 -- The ⊗; and ⊗: commands move straight up and down inside line editor.
The commands ⊗; and ⊗: do the same thing as ⊗↑ and ⊗↓ respectively,
except that instead of positioning you at the end of the new line,
they position you at the display column where you were when you gave
the command. Thus these commands move you (inside the line editor)
straight up and down, except that if the display column is in the
middle of a tab on the new line, then you are positioned at the
beginning of that tab and if the display column is beyond the end of
the newly edited line, you are positioned at the end of that line.
∂8/75 -- After exiting from E, the monitor command CONTINUE restores E
at the same line and page from which the command to exit was given.
∂8/75 -- Entering and leaving the line editor now does not set the
WRITE flag unless the line is actually changed.
∂8/75 -- Parenthesis finding/matching commands available. See p. 22.
∂9/75 -- The ⊗H (Home) and ⊗? commands now will take arguments. See p. 15.
∂9/75 -- Type ahead for line editor improved.
∂9/75 -- ⊗0⊗W and ⊗0⊗L now move half a window in the indicated direction.
∂9/75 -- Attempting to move the arrow off the screen usually caused the
window to be reset with the arrow in the middle of the window.
∂9/75 -- ⊗XLINCNT now reports the length of the current line and the
number of characters on the current page.
∂10/1/75 -- New partial-sign command ⊗∂<cmd>. See p. 24.
∂10/7/75 -- αV redraws the screen on Data Disc displays without erasing.
αβV still erases before redrawing.
∂10/7/75 -- ⊗XBURP command causes RIPPLING to discard any whole records
of nulls from the current page only.
∂10/7/75 -- Macro defining and calling commands (⊗XDEFINE and ⊗Y) save
the user from having to type the same sequence of commands several times.
See p. 25.
∂10/9/75 -- Punctuation-at-end-of-line bug in XJUST command fixed.
∂10/16/75 -- Bug fixed in macro calls.
∂10/17/75 -- Un-copy-attach bug fixed.
An attempt to detach more lines than are in the ATTACH buffer no longer
causes trouble. The current line cursor may not be left where you expect
it to be but E does not blow up.
∂10/28/75 -- E now permits lines containing up to 133 characters to be
transfered to the line editor for editing (the previous limit was 120).
Lines longer than these limits may be broken up by XJUST and XJFILL
commands. Their lengths may be ascertained by the XLINCNT command.
∂11/11/75 -- Automatic directory updating for extended files.
If you edit with E a file that has been extended by some other
program, E will automatically update the directory. However, the
updated directory will not be written out until some other page of
the file has been changed and is being written on the disk. The
extended part of the file must be formatted correctly for E, which
simply means that any formfeeds found in that part of the file must
occur as the first character in a (200-word) record; otherwise, the
file must be reformatted and a new directory generated. When a file
has been extended properly, E will say how many pages have been
added to the file, or if none, how many records have been added to
the last page.
∂11/13/75 -- XSPOOL and XXSPOOL commands, will now spool the ATTACH buffer.
∂11/20/75 -- E files extended by other programs.
E can handle easily almost any file that has been extended by
another program even though the directory has not been updated by
that program. The single restriction is that the file must remain in
correct E format with Formfeeds occurring only as the first
character in a record. MAIL and RCV extend files ok. See p. 28.
∂11/20/75 -- The trailer line on the screen has been changed. See p. 5.
∂12/5/75 -- When more than 8 files are referenced, by file switching
commands, E now gives the new file the referencing number that was
assigned to the longest-unreferenced file. The user is warned of this
reassignment.
∂12/11/75 -- A new X command, XPROTECTION, is now available.
See p. 18 for details.
A warning is given when one enters a file that has the 400 protection
bit set (such files are not saved by DART).
∂12/12/75 -- New X commands: XMAIL, XSEND, XREMIND. See p. 18.
∂12/14/75 -- XMARK now works in ATTACH mode. See p. 18.
1976
∂1/16/76 -- Several new extended commands have been added
to allow TTY/Imlac users to execute commands that previously were
available only through certain characters not generally typeable on
TTYs; see p. 29. The XMARK command and XINSERT and β<FORM> are now
illegal in /N mode; they always used to die horribly in /N mode
anyway (will be fixed eventually). Bug in \ command fixed to clear
ESC I flag and clear search page number at top. XEXIST and ∃
commands includes "R" for current file if open in Readonly mode (for
ttys). /N included in filename displayed when in no-directory mode.
Various other improvements in tty/imlac service. XTYPE command (old
command) now accepts search distance as amount to type out; mainly
useful in conjuction with new XMSG (XPARTIAL) commands:
XMSG<cr>XTYPE<cr> will type out current message in mail files, or
current page if no ∂'s. Certain filehacks (eg, \GRIPES) can be
typed to E where filename is expected; allows easy abbreviation of
names of certain files on [2,2]--see p. 30.
∂2/4/76 -- New commands XLPAREN and XRPAREN. See p. 22 for details.
∂2/13/76 -- Changes to commands FF, VT, L, T, B. New commands ∧ and ∨.
All users are urged to refer to p. 7 for details of these changes which are
quite extensive and which make window moving much easier.
∂2/14/76 -- Searching from first character on line. Null substitution.
The old E bug causing searches to ignore the first character of the
current line is fixed! Also, the null substitution string bug has
been fixed completely now (we think).
∂3/19/76 -- The old limit of 511 characters on a line has been removed.
XBREAK will break lines (of any length) at specified column position. See p. 12.
The XJOIN command has been modified to join lines without introducing
spaces for deleted CRLFs. (It now undoes an XBREAK.) See p. 12 for details.
Up to 23 marks in a file allowed (page and line numbers limited to 262142).
The repeat argument limit of 510 has been increased to 262142.
The ≤ and ≥ commands now take repeat numeric arguments.
The Z command (Imlacs only) now accepts a numeric arg which causes an
L command to be simulated with that (relative or absolute) arg first.
∂3/22/76 -- New switch /13E begins edit at end of page 13.
/E (no argument) begins edit at end of the file's last page.
An old bug has been fixed that caused characters to be lost from the middle
of a message file when rippling occurred if the file was bigger than 8K.
Any number of substitutions can now be done explicitly and E will
no longer stop and request confirmation after 100 have been done.
∂4/6/76 -- Several minor new features.
A page bloated by more than 18 records will automatically be burped
when written out.
⊗#⊗V waits # seconds after displaying screen if # is positive; useful in macros.
Bug fix in macro expansion for αK and αS followed by activator.
⊗T and ⊗B made legal from line editor, but they will not move arrow
in that case; that is, the arrow line will not glitch past edge of
screen when these commands are given from the line editor.
⊗G and ⊗π commands removed (they have never been documented,
so don't look for them).
Window position (as well as arrow line) maintained on exit followed by CONTINUE.
∂4/9/76 -- More minor changes/bug fixes.
After E has made you confirm a null substitution command, it no longer
forces the first substitution to be done with the line editor.
⊗R command (replace attach buffer) no longer dies if you have switched
files. Gives error message instead.
⊗XRSYS ⊗XRUN ⊗XTV commands fixed not to spuriously set "command given
from line editor" bit when swapping in new program.
⊗XBACKGO command modified to restore window position on page returning to.
α<space> in macros has been fixed (was broken when αK was fixed on 4/6/76).
∂4/11/76 -- Line redrawing bugs fixed.
For a long time (since last summer), E has failed to redraw (on DD) any
line which was entered into the line editor with a non-line-editor
command (commands other than αS α<space> α<tab> etc.) and which was
activated with altmode. This bug has finally been fixed, and it is now
claimed that all line-redrawing bugs have been fixed. If you see E fail
to correctly display one or more lines, please report to ME exactly what
you did to make it lose. Thanks--ME.
Also fixed is the failure to redraw the attach buffer when ⊗-⊗C is given
with more than 8 lines attached.
∂4/22/76 -- Lots of bugs fixed, mostly in /N and multipage modes.
Approximately 20 bugs have been fixed, including at least 3 in /N mode
operation and at least 10 in multipage mode operation. It is now
believed that both of these modes should be completely reliable!
Multipage mode involves having two or more consecutive pages in core at
the same time and is invoked by the commands β<FORM>, XINSERT, XAPPEND,
XDELETE and XMARK; all of these commands were formerly capable of causing
trouble, although the trouble in certain cases would not be noticed until
you tried to write out a page. All of these should work in all cases
now, including multipage mode in a /N file.
Other new features:
The line and page numbers on the trailer line are now kept current with
respect to the arrow line, even in multipage mode. The header line now
lists the range of pages in core in multipage mode, and the line number
that appears on the header line is relative to the beginning of the whole
range, not the arrow line's page. The total number of pages displayed on
the trailer line in a non-formatted file (/R) is changed from "?" to the
actual number as soon as the actual number is known. The record and
character counts usually displayed on the trailer line are suppressed
(replaced by ?R) when editing a non-formatted file (in /R mode).
The R command (Replace attach buffer) no longer leaves multipage mode if
the original page from which the attach buffer came is one of several
pages in core.
The new XALIAS command can be used to change your alias PPN. It takes a
following text argument in exactly the same form as the system ALIAS
command: 1) PRJ to set project to PRJ and programmer to logged in name,
2) PRJ, to set project to PRJ and retain previous alias programmer name,
and 3) PRJ,PRG to set both project and programmer. Note that the XALIGN
command forces at least ALIA to be used in the name of the XALIAS
command. The XALIAS command types out your new ALIAS on both the current
piece of paper and PP 0 so that you will see your changed alias when you
exit.
Saying "N" to all three questions about formatting a non-formatted file
that you are trying to switch to no longers causes the attach buffer to
be spuriously discarded and the screen to be reset to the normal piece of
paper.
If you switch away from a /R file when you have made changes to the
current page, E still does not write out that page nor does it ask you
what mode you intended, BUT it does give a warning that the changed text
was not written out.
The new #XAUTOBURP command sets the threshold number of records of nulls
for autoburping to the number # specified. A zero or negative arg
disables autoburping entirely. An arg of just "+" sets the threshold to
its default value, which is currently 19. If no arg is given, E will
simply type out the current threshold. (A page to be written out that
has the threshold number of records of nulls, or more, will be
automatically burped to delete all records of nulls from that page.)
αD used in macros to delete a CRLF has been improved. To work
completely, however, it must be preceded by a α<tab> (or αK<cr> or
αS<cr>) which is not separated from the αD by any character with control
bits. E.g., α<tab>XYZαD and α<tab><bs>XαD will work properly, but
α<tab>α<bs>XαD will not do the right thing in certain cases. Note that
it is only in macros that αD doesn't always work--plain typeahead still
works perfectly. (The effect of bad uses of αD is that characters after
the αD in the macro definition up through the first activation character
following are not "typed" until the macro expansion ends, which can be
particularly noticeable if you use a repeat argument on the ⊗Y command.)
A warning message is generated at initialization time if the upper
segment is not write protected or if the upper segment checksum is not
correct.
∂4/23/76 -- Bug fix to attaching text in non formatted file.
Attaching text in a non-formatted file and then switching files and
putting down the attached text used to cause a "former WRITE CODE
ERROR" if the page in the non-formatted file did not end with a CRLF.
This bug has been fixed.
∂4/27/76 -- Filename scanner cleaned up.
Partially specified filenames are now parsed correctly. This mainly
fixes the parsing of filenames like "FOO[1]", in which the programmer
name assumed is now always your alias programmer name. Also, devices
(such as "UDP:") found in TMPCOR files are no longer sticky--you must
specify UDP: each time you want it.
∂4/27/76 -- Change to effect of αL and αP in multipage mode.
(Note that αβL and αβP are unchanged. TTY users note that the effect you
now get with the L and P commands is that of αL and αP as described below.)
The αL command will go to the specified line on the current page, which
is defined as the page the line you are pointing to is on. Thus if you
are on line 3 of page 4, then ⊗1⊗3αL will move the arrow down 10 lines
(to line 13), but not beyond the pagemark for page 5, whose line is
considered to be on page 4 like the row of asterisks at the end of the
last page in core. The αβL command moves to the specified line within
ALL of the text in core, treating pagemark lines like normal lines; for
example, just αβL will always move to line 1 of the first page in core
whereas αL will always move to line 1 of the current page (defined by the
arrow). If you have only one page in core, αL and αβL are identical.
The αP command will not flush the incore page(s) if the requested page
is already in core. In this case, the arrow will simply move to line 1
of the specified page. The αβP command always flushes the incore pages
and reads in exactly the one page requested.
∂4/30/76 -- αβI and αβ<cr> at beginning of line editor changed.
These commands no longer insert a blank line ahead of the new blank
line about to be edited in line insert mode. This change only
affects the results of giving either of these commands from the line
editor when the cursor is at the beginning of the line.
Also, a bug has been fixed that previously prevented ending a find
command with a line editor command when the current line was either
blank, a pagemark, or the row of asterisks at the end of a page.
∂5/11/76 -- XSPOOL XXSPOOL XMAIL XSEND XREMIND now take numerical args.
These commands used to output as text either the whole attach buffer
or the whole page. Now, however, a preceding numerical argument to
any of these commands specifies the number of lines to be output
(spooled or mailed). If any text is currently attached, the output
will consist of the specified number of lines at the beginning of the
attach buffer; otherwise, the output will consist of the specified
number of lines (from the page) starting at the current line. As
before, if no argument is given, the output is either the whole
attach buffer (if any) or the whole page. The argument to these
commands can be specified by a search command (⊗F ⊗XFIND or ⊗∂) just
as can be done with the commands ⊗A (attach) ⊗C (copy) and certain
others. For example, ⊗∂⊗XMAIL PRG<cr> will mail the current message
to PRG.
Note: a zero or negative argument to MAIL, SEND, or REMIND can be
used to send a one-line message entirely from the X-command line (no
text from page or attach buffer sent). To do this, you MUST separate
the message text on the command line from the command itself with a
Formfeed. For example, ⊗0⊗XSEND ME<ff>Hey, it really works!<cr> will
send ME the message "Hey, it really works!" This technique can also
be used to include a subject line or initial text line ahead of the
message text being output from the page (or attach buffer). That is,
⊗∂⊗XMAIL/SUBJECT PRG<ff>Sending mail from E<cr> will mail the current
message to PRG with the subject "Sending mail from E".
A bug has been fixed in macro expansions that involved typing the
line editor command αK or αS as the first character on a line.
The ⊗V command now redraws the screen immediately, whether typeahead
is present or not.
∂5/18/76 -- XSAVE command added--writes out page & attach buffer in E$SAVE.TXT.
This new command saves the current state of your incore page text,
including any attach buffer text, in the file E$SAVE.TXT on your LOGIN
disk area. This is now done automatically for almost all fatal errors
detected by E; when it happens as a result of such an error, a message
to that effect is typed out. (The file E$SAVE.TXT may NOT be written
out successfully if the error is detected again while writing this
file.) Note that any previous E$SAVE.TXT file is superseded (replaced)
by the new file. Note also that this command (and its automatic call
upon error detection) does NOT touch the file you currently have open
for editing.
A bug has been fixed that (rarely) caused rippling when unnecessary.
The maximum size of a macro definition has been doubled to 239 characters.
∂5/25/76 -- Leading tab on line means new paragraph during justification.
A bug has been fixed that caused lines beginning with a tab not to be
interpreted as the beginning of new paragraphs in justification. Tabs were
correctly recognized previously only on the line the arrow pointed to.
∂5/27/76 -- New directory search command: ⊗F<string>⊗: finds labels.
This command will search the directory and go to the page for which the
<string> is found. Then it will search that page for an occurrence of
<string> immediately followed by any of ":", "=", or "←". Thus, labels
such as START: or definitions such as START=10 or START←10 can be
found easily if START occurs on the page's first (directory) line--use
the command: ⊗FSTART⊗: (as usual, αβF finds a delimited string; the ":"
will be detected correctly if it is the ending delimiter).
Also, both the ⊗F⊗P and ⊗F⊗: directory search commands has another form
to cause E to search only directory lines for pages following the
current incore page(s). The form to get this effect is ⊗F<string>⊗+⊗P
or ⊗F<string>⊗+⊗: (that is, precede the ⊗P or ⊗: immediately with ⊗+).
This is useful when a string occurs on several directory lines.
∂6/1/76 -- Minor bugs/features fixed.
⊗∂αβD given on an empty incore page will now delete the page itself.
Formerly, this command was a no-op on a empty page.
An ET<cr> command which finds that the file named in TMPCOR is gone
(e.g., deleted) will no longer look for another file with different
extension.
The ⊗∂ command will not go beyond an incore pagemark.
αβD has been repaired to preserve the location of marks beyond the
line(s) that are being deleted.
The directory search commands (⊗F⊗P and ⊗F⊗:) now work correctly in
multipage mode.
∂6/3/76 -- <CR> at end of page no longer adds a line--use β<CR> or αβ<CR>.
This change allows <CR> to be used near the end of a page without the
risk of changing the page (setting the W flag) by accident. To add a
blank line when you are at the end of a page, use β<CR>. To add several
blank lines, use ⊗#αβ<CR> (which adds # blank lines). To add text at
the end of the page, simply type over the row of stars as before; when
you activate that line with anything but <ALT>, its text will be on a
newly added line just like always. To add lots of text at the end of a
page (or, for that matter, anywhere in a page), type αβ<CR> to enter
line insert mode. MAIL your COMPLAINTS or COMPLIMENTS to ME.
Now, when you leave a READONLY file from a page which had been altered
(W flag on), you get the standard message:
SORRY -- PAGE HAS BEEN ALTERED -- PLEASE REAFFIRM MODE.
You can then type either READONLY or READWRITE to determine whether the
altered page will be written out. Formerly, changes to such a page
where simply ignored and you had no chance to write them out after you
had given the command to change files.
The ε and λ commands not preceded by a numeric argument now update the
display before reading the new filename unless a whole line (the new
filename) has been typed ahead.
An <ALT> response to any of the questions about formatting implies NO to
that question and suppresses any remaining questions, thus letting you
immediately enter a new filename without having to say NO three times.
∂6/26/76 -- ⊗XHEIGHT command
This new command, preceded by a numerical argument, sets the number
of lines of display to use for text. This is especially useful on
IIIs to reduce flicker. For example, ⊗2⊗0⊗XHEIGHT<cr> will cause E
to use 20 lines for displaying text. Minimum size is 10 lines (since
attach buffer can use 8). Maximum is terminal dependent. ⊗XHEIGHT
without an argument will reset to normal size.
∂8/8/76 -- A potential bug occasionally resulting from deleting several
in-core pagemarks has been fixed.
∂8/20/76 -- DMs are now considered displays by E.
There are 17 lines for text in E on DMs. There is no arrow for the
current line; only the position of the cursor under the first character
of the line indicates the "arrow" line. Thus there is no easy way to
tell the difference between editing a line with the cursor under the
first character and not being inside the line. Later, the DM line
editor will be displayed as bold, so it will be easy to tell when you
are inside a line.
Since there is no arrow, there is no double arrow for line insert mode,
and there is essentially no way to detect that you are in line insert
mode, except that when you type CR, a new line is inserted. However,
this shouldn't cause any difficulty since the commands legal in line
insert mode are exactly the same as those legal in line edit mode.
Attached lines are indicated by displaying them as bold or blinking
(blinking if you haven't had your DM modified, bold if you have) instead
of preceding them with a vertical bar. Attached blank lines are
slightly difficult to detect since a bold or blinking blank is still
blank. In attach mode, the cursor is returned to the page printer at
the bottom of the page.
Whenever E has to redraw the whole screen on a DM, any display output
still going is flushed since it would be overwritten anyway.
When E doesn't have to redraw the whole screen, it is possible that it
might fail to leave the line editor correctly displayed if you have
typed ahead. You can always correct the line editor display by typing
ESC R (i.e., NULL R). If the screen text displayed is also screwed up
somehow, αV (i.e., EDIT V) will redraw the screen correctly.
∂8/20/76 -- Line editor no longer erased on DD/DM when activated while editing text.
Thus, the version of the line editor that appeared when you activated it
will be left on the screen. This is convenient if, for instance, you
are doing multi-page searches from the line editor and want to look at
the final version of the line you edited while the search is running.
Note that if you typed ahead a lot and it had not all appeared yet when
you activated, then you may not actually see the final version of the line.
∂9/5/76 -- Major changes have been made to the JUSTification commands, and
7 new commands have been added. The new features greatly extend the
usefullness of these commands so that text in unusual forms can be
handled. Many of the defects and shortcomings of the older version have
been corrected. Report any bugs to ALS.
The more important changes that will affect all users are listed
below.
1) Left margins are now specified as indents, not as column positions,
that is, if one wishes to specify that the line is to start with no
indent one types 0 not 1 as formerly. This makes all commmands
consistent. Right margins are still in terms of column position.
Specifications are now always sticky and the initial default values
are 4,0,74.
2) It is now possible to specify the number of blank lines to be used
between paragraphs. The default condition is (as before) for there to
be the same number of blank lines in the justified text as there were
in the original and this is signalled by a -1 as the fourth number in
the specifying string (4,0,74,-1). Existing specifications can be
seen by typing a justifying command specifying 0 lines.
3) Switches are now used to change the way that E detects the start of
a new paragraph. The default switch N (for Normal) approximates the
conditions formerly used. Blank lines still signal a paragraph break
(as they do for all switches). Instead of requiring a TAB as the
first character (when bank lines are not used) any indent ≥2 is now
taken as a crown line. Other switches allow E to asertain the
existing indent conditions from the text itself and to use these, A
for arbitrary, conditions to signal new paragraphs. (Try typing ⊗0⊗XJU
to see how the switch setting is reported.) Read p. 16 before trying
to use any other switches. People who like to use blank lines only as
new-paragraph indicators and who want their text left with no indents
can achieve this condition by typing A 0 as a following string after
their first JUST command (separated fron the command name by a space).
(See p. 32 for a longer list of changes and p. 16:18 for full details)
∂9/20/76 -- DM line moving hardware utilized.
On DMs, when lines on the screen simply need to be moved, the DM
insert/delete hardware for lines is used to avoid having to redraw any more
text than necessary. This involves some attempt at optimization of which
lines get moved and which redrawn when lines on the screen need to be
moved across each other (which cannot be done). Bugs to ME.
∂10/4/76 -- Improvement in use of DM hardware; "∞" accepted in switches.
You can now use "∞" (infinity-sign) as a value in a switch, e.g., /∞P.
It represents a very large positive number and cannot be negated.
On DMs, the line-moving hardware is now NOT used unless it results in
saving at least 10 output characters.
∂10/10/76 -- Three minor bugs fixed.
1)Fix to ⊗F⊗P to remember control-bits on ⊗F for subsequent ⊗* commands.
2)Test for line-too-long-for-line-editor made slightly more conservative.
3)Fix to not screw up when FF found in last word of record in /R file.
∂10/21/76 -- New /S switch; also /N switch no longer needs confirmation.
1)Formatting of /N files no longer needs to be confirmed by user.
2)New switch /S means edit new file at Same line & page as at in current file;
for example, if you are at line 12 on page 15 if file FOO and say
⊗εBAZ/S<cr>, then the arrow will be positioned at line 12 on page 15 of BAZ.
∂11/15/76 -- New command ⊗XEXACT causes searches to distinguish case of letters.
The new extended command ⊗XEXACT causes any subsequent searches to
distinguish between upper and lower case letters. Searches will succeed
only if the searched text contains the same cases of letters as given in
the search string. The command ⊗-⊗XEXACT will disable this feature and
thus cause searches to ignore the case of letters.
Also, the default paragraph indent for the justification commands has been
changed back to its original value of zero (it had recently been 4).
1977
∂1/5/77 -- A bug in XBREAK has been fixed. If an attempt is made to break
a line in the middle of a TAB the break precedes the TAB except for the
unusual case where the first character is a TAB and the BREAK value has been set
at less than 8.
∂1/8/77 -- Two new commands XTIN and XSIN have been added. TIN puts
Tabs IN, in place of spaces when this will save space and when it is
allowable. This may make it possible to save space on the disk,
providing, of course, that the TIN command is followed by an XBURP
command. SIN puts Spaces IN, in place of TABS. See page 19 for details.
Either command may take an argument, with the default value being the entire
page or ATTACHment.
∂1/12/77 -- The substitute command now handles long lines and will not let
you substitute for a CR (found, for example, by the use of the "any
delimiter" symbol "|").
∂1/15/77 -- MARKS on deleted or attached lines are now moved to the first line
after the deletion or attachment. XCANCEL restores marks with the restored page,
of course, only if the marks had been previously saved by an αβ. command or by
switching pages.
∂1/17/77 -- Two very old bugs fixed: one in free storage routines and one
in directory line maker (called when you change first line on page or edit
/R an unformatted file). Also, ∃ command now always reports the index
number of the Home file.
∂1/21/77 -- Line MARKS now stay with the right lines during αβXAPPEND, β<FF>
and αβD (as applied to an in-core FF) operations. They are still adversely
affected by XBREAK, XJOIN, XJUST and related commands.
∂2/5/77 -- Two new commands ⊗XNDFAIL and XNDSAIL generate and insert a new
first line (appropriate for the directory) in appropriate FAIL and SAIL
formats for labels and for specified categories. No new line will be
generated if the page is empty.
These commands apply to the current page but if more than one page is in
core (through the use of XAPPEND or **<ff> commands) then the information
will be gathered from only that page in which the current line is located and
the information will appear as a new first line on this page. Note: this was
changed on 3/15/77.
The XNDSAIL command may be used as an information source in a variety
of different ways. It is not intended for use with text material.
XNDFail, given with a <cr> termination, lists all labels.
Given with a α<cr> it lists only those labels that have one or more ↑'s
Given with αβ<cr> it lists only those labels with ↑↑ (or more).
This command does not take arguments (unlike XNDS). If the command is
typed with a prefix argument of 0, it states the conditions outlined
above and is otherwise a NO-OP.
XNDSail, given with a <cr> termination, lists all words that are preceded by
certain catagory words, the default words being RECORD!CLASS,
RECORD_CLASS and PROCEDURE.
Having found a catagory word the program lists the first word following
the catagory word and then ignores any following text until either a comma
or a semicolon is encountered. When a semicolon is encountered the search
for a new catagory word is resumed. If, on the other hand, a comma is
encountered (not however within parens) then the next word is taken as
another example of the catagory and it is listed, preceded by a comma.
Listings following different catagory words are saparated by spaces.
One additional category may be specified by typing its name after a
space following the command name and terminating it by a <cr>.
Up to 4 new categories may be specified with the categories after
the first one replacing the default categories, one by one.
To retain some default categories the list is terminated by a <cr>
If the typed list of categories is terminated by ⊗<cr> then only the
typed categories are used, and the default ones are eliminated.
If the command is terminated by ⊗<cr> without any typed category names
then the original default categories are reinstated.
If given with a prefix argument of 0 this command will accept any typed
categories and then will list the categories that are in effect
without generating a text line.
∂2/11/77 -- The system command ET? now gets the E manual E.ALS[UP,DOC] directly.
∂2/16/77 -- The method of loading E on an ET command has been changed. The
system no longer needs to find space for an upper segment which it would
end up not needing, if some one else is already useing E. Now only a lower
segment is loaded, and code in this section checks to see if there is already
an upper segment. If there is, no new segment is loaded.
∂3/8/77 -- At the end of a line of text, the following line editor commands
no longer activate uselessly: α<TAB>, αS, αK, αR, and META-<plain char>.
∂3/8/77 -- Reporting of FIND and related commands has been augmented to
show "(observing case)" or "(ignoring case)" depending on the state of the
EXACT switch. The fact that the search was for a delimited string is now
indicated by the use of "|" instead of the usual "\" delimiters (which are
still used for an undelimited string search).
Furthermore, a zero argument to any of the Find or Substitute commands
(⊗0⊗F, ⊗0⊗XFIND, ⊗0⊗*, ⊗0⊗\) will simply cause the search and/or
substitute string for the given command to be typed out. Note that ⊗0⊗F
thus does not take a following search string argument.
∂3/8/77 -- E can now be in any one of three possible reporting states.
The reporting state determines how much information E types out at various
times. The three states are: the normal default state, a verbose state
achieved by the command ⊗XVERBOSE and a terse state achieved by the
command ⊗XTERSE. The normal state can be restored by giving either
⊗-⊗XVERBOSE or ⊗-⊗XTERSE. You can find out the current state by giving
either ⊗0⊗XVERBOSE or ⊗0⊗XTERSE. The normal state now does somewhat less
reporting (that is, less typeout) than formerly, especially for the
parenthesis commands. However, a new command ⊗XPINFO has been added to
give you the details of the last parenthesis command (or use ⊗XVERBOSE).
No error messages are ever suppressed by the terse state.
The following remarks are currently suppressed only in the Terse state.
Only one MARK and you are there!
There are no marks!
Already marked!
Not marked!
All marks have been cleared.
Removing last MARK on this page.
MARKS on this page only have been cleared.
Page is empty. (XNDFAIL, XNDSAIL cmds)
Aborting macro ... (error occurred in macro while in ⊗XSTOPONE mode)
Abort of # macros requested from ... (⊗#⊗XABORT cmd given)
The following remarks are typed out only in the Verbose state.
N characters added/removed (justify commands)
Line now has N chars. (join)
You have replaced XXX with YYY (substitute)
(detailed reporting of the parenthesis commands--use new ⊗XPINFO)
The new line of N chars lists M items (new directory line commands)
Calling ... (calling a macro)
Ending ... (a macro has finished)
Suggestions other informational remarks to suppress will be accepted.
∂3/15/77 -- Bunch of small fixes and a couple of new features.
Left- and right-arrow cmds made to use search length arg.
"I" displayed on header line while in line-insert mode (especially for DMs).
Fix to prevent inputting of BS in a line of text.
Multipage fix to NDFAIL and NDSAIL commands.
Fix to updating of trailer line.
Fix to XRUN and XRSYS cmds to use default extension of DMP to return RPG starts.
Fix for ambiguous extended command given from line editor.
∂3/30/77 -- Preparations for expanded macro facility.
⊗XEMPTY and ⊗XNONEMPTY commands have been added to move to next empty or
non-empty line. A repeat argument will cause these commands to look for
that many empty (or non-empty lines). A negative arg will cause the
search to go backwards. A positive arg (or default of 1) will ignore the
current line and search from the next line, but will not cross a
subsequent incore pagemark; hence the search is of only one page. These
commands can also be used, both inside and outside macros, to tell if the
current line is empty--use a zero arg: ⊗0⊗XEMPTY is a no-op if the
current line is empty, but will say something and stop any running macro
if the current line is non-empty; ⊗0⊗XNONEMPTY is a no-op if the current
line is non-empty, but will say something and stop any running macro if the
current line is empty. The reason for these new commands is that soon it
will become legal for line editor commands to be used to get into the line
editor on empty lines, thus those commands will no longer stop macros on
empty lines.
Also:
E now enables wholine filestatus during rippling.
Some multipage fixes to justify and TIN and SIN and TABLE commands are now in.
CETV FOO←BAZ has been made equivalent to ETV FOO←BAZ.
Line too long for line editor tells how long it is.
∂4/4/77 -- Several minor bugs fixed.
Location to return to by XBACKGO command preserved over page deletion.
Fix to CONTINUE after exit (and XCLOSE) to ensure file hasn't changed.
Fix to CONTINUE after LOOKUP error.
Fix to XBURP command and autoburping to make them work in all cases.
Fix to avoid infinite loop when detached.
∂4/7/77 -- More preparation for multiple macros, plus some minor improvements.
Line editor commands have been made legal when pointing to an empty
line. The important things to note are (1) that αD given when pointing
to an empty line will delete the CRLF and leave you with the following
line in the line editor, (2) that αI given when pointing to an empty
line will enter line insert mode there, and (3) the commands αS and αK
given when pointing to an empty line still take a following arg (to
search or kill to) although such a search or kill on an empty line is a
no-op.
An "A" is now displayed on the header line when in attach mode.
Display lines not used with a short page in core on a DM are correctly erased.
∂4/10/77 -- Change to ⊗XMARK command in attach mode at top of page.
To facilitate moving pages around in files, the ⊗XMARK command given
while in attach mode first puts down the attach buffer and then
inserts the pagemark. However, now if you are at the beginning of a
page when you do this, the pagemark will be inserted beyond the
put-down attach buffer, so that in this case, you will end up with
the lines that were previously in the attach buffer now on a page by
themselves. Formerly, in this case you would have ended up with an
empty page with the ex-attach-buffer text on the next page.
A bug has been fixed which caused a line not to be redisplayed when
altmode was typed from line insert mode on a DM.
∂4/28/77 -- One new command (!) and several small fixes.
The exclamation-point (!) command has been added to operate on paragraphs
in the same way that the partial-sign (∂) command operates on messages.
NOTE: "PARAGRAPH" here means a contiguous group of non-empty
lines plus certain surrounding empty lines (if any).
Included in the paragraph of the ! command are: one empty
line (if any) at the beginning of the paragraph and all but
one of any empty lines at the end of the paragraph. Thus
within a group of continguous EMPTY lines, only the last
line is really considered by the ! command to be non-empty.
The two commands ! and ∂ don't actually do anything until you type another
command. If that following command accepts a search distance argument,
then the effective argument will be the number of lines in the current
paragraph (! command) or message (∂ command); for example, ⊗!⊗XJUST<cr>
will justify the current "paragraph". If the command that follows ⊗! or
⊗∂ does NOT accept a search distance argument, then that command is
carried out after moving to the beginning of the next paragraph (!) or
message (∂). The one case in which the ! and ∂ commands don't take a
following command is when a preceding zero argument has been supplied
(that is, ⊗0⊗! or ⊗0⊗∂), in which case the command immediately moves to
the beginning of the current paragraph (!) or message (∂). Like the ∂
command, the ! command will delete the current pagemark if you attach or
delete all the text on the page with this command.
Other changes to E:
The <vt> character is now treated as an ordinary character by the various
justification type commands (XJUST, XJFILL, XTIN, etc). This character
will display as an integral sign although it is typed out or listed as a
vertical tab (i.e., several linefeeds).
Two minor justification bugs have been fixed. The arrow now always stays
where it should on XSIN commands, and two spaces are now always left after
punctuation ending a sentence during XJUST commands even if the
punctuation occurred at the end of a line in the original text.
PAS (PASCAL) has been added to list of standard filename extensions looked for.
ETV <FILE1>→<FILE2> now works again (provided <FILE1> has a directory).
This copies <FILE1> into <FILE2> and then edits <FILE1>.
Altmode typed in the middle of a line in line insert mode now saves the
text of that line. Thus altmode given in line insert mode will now only
delete the current line if that line is completely empty.
∂5/6/77 -- Line marks now saved and restored via TMPCOR file; other minor fixes.
A new switch of the form /a,bM places a mark on page a at line b.
This is used in E's TMPCOR file to save and restore all line marks.
Old bug fixed that caused wrong device to be kept open when file not found.
Cleaned up αM command to avoid losing if page or line of mark doesn't exist.
Line editor cmds made illegal once again if pointing to end of page (for macros).
⊗XBACKGO fixed for several cases where it used to return to the wrong right place.
∂5/9/77 -- Macro expansion fixed to know about new line editor commands.
Also, ⊗XXSPOOL now uses the system default font.
∂6/2/77 -- Improved macro facilities with named, recursive macros. See pp. 25-26.
Also:
RPG startup with zero filename causes E to read (and later write) TMPCOR file.
Bug fix to ! and ∂ commands when given from inside line editor.
Minor bug fix to NDFAIL,NDSAIL commands in case where previous dir line was empty.
Exiting not allowed during macro expansion.
Blank lines at end of page now considered part of prev paragraph by ⊗! command.
Fixes to prevent spurious /N or /#F typed out when file not found.
Fix to return home to right place when left home with multiple pages in core.
∂7/3/77 -- Greatly improved disk buffering (using caches) on input and output.
Also:
Added .MID (MIDAS) to list of desired extensions.
Added .FNT and .CFT (fonts) to list of undesired extensions.
Attaching/copying/releasing fixed for case where next line is a pagemark.
Fix to avoid free storage error if indirect file ends with incomplete macro def.
Fix to infinite repeat arg for macro calls; max repeat arg limited to 131064.
∂7/14/77 -- One new command, a slight mod to the ⊗! command, and a fix to ⊗XBREAK.
⊗XWRITTEN command added to find out when the current file was previously
written and who did it (PPN and jobname).
The ⊗! command now never deletes a pagemark (the ⊗∂ command still does).
The ⊗XBREAK command now breaks properly lines in which a tab reaches
exactly to the break limit.
∂7/27/77 -- Extended searches in unformatted files are much improved.
Formerly, it was possible for an extended search in an unformatted file
to fail to find an existing occurrence of the search string, or worse,
for an ill mem ref to happen when it did find it. Both of these bugs
have been fixed. However, note that extended searches in unformatted
files still cannot go beyond the last page that you have looked at.
The directory is used for finding where each page starts in an extended
search, and the directory will only be complete out to the last page
that you have actually gone to. Thus, to make sure extended searches
can go all the way to the end of the file, you should first move to the
last page of the file (allowing E to generate the complete directory)
with a command like ⊗∞⊗P. This does not apply to any file that already
has a valid directory, nor to any file being edited /N.
Also, a couple of other bugs fixed:
Fix to prevent infinite loop when doing ⊗-⊗P from directory page in
unformatted file.
Minor fix to filehack parser.
∂8/3/77 -- Couple of rare bugs fixed.
Fix to ⊗XAPPEND to disallow editing of pagemark from newly appended page.
Fix to ⊗Q command to do nothing if previous line is a pagemark.
∂8/14/77 -- Minor fixes.
Fix to make sure trailer values get updated when switching files.
Doesn't say "Are you sure that ... will approve" if not overwriting old file.
Slight fix to DM display routine to force redrawing line below line editor.
Fix to avoid spurious retyping of last line on non-displays.
∂8/19/77 -- Improvements for non-display users; slight changes to old commands.
1. To allow substitution commands to be given from non-displays, E now
accepts a LINEFEED AT THE END OF A SEARCH STRING to indicate that a
SUBSTITUTION STRING IS COMING next. Thus, the following commands are
equivalent (although the first is difficult or impossible to type on a
non-display):
αFsearch stringα\substitute string<cr>
αFsearch string<lf>substitute string<cr>
Similarly, the following multipage substitute commands are equivalent:
αXFIND search stringα\substitute string<cr>
αXFIND search string<lf>substitute string<cr>
2. A non-display user can now execute commands that require use of
particular combinations of the "bucky" bits CONTROL and META. Two new
extended commands are used to specify what bucky bits are to be assumed
with the next command character.
⊗XCONTROL<cr> causes the next character to have only
the bucky bit CONTROL.
⊗XMETACONTROL<cr> causes the next character to have both
bucky bits META and CONTROL.
If neither of these commands is used on a non-display, a command that
makes a distinction between CONTROL and META-CONTROL will execute the
CONTROL version; and a command that distinguishes between any bucky bits
and none at all will execute the no-bucky-bit version.
Here is an example of using the ⊗XMETACONTROL command to do a delimited
search (and a substitution); the command
XMETA<cr>Fthis<lf>that<cr>
will find a delimited "this" and substitute "that".
3. To facilitate unambiguous abbreviation of the new ⊗XCONTROL command,
the old ⊗XCONTINUE command for resuming macro expansion has been renamed
to ⊗XRESUME.
4. Two new responses are now acceptable replies to the various Yes-or-No
questions about formatting that E asks when you try to edit a file that
doesn't have a directory. You can say /R to have E edit the file in
Readonly mode, or you can say /N to have E edit the file in No-directory
mode. NEITHER OF THESE TAKES A CARRIAGE-RETURN. These new responses save
you the trouble of waiting for the appropriate question to come up. They
are also useful if you accidentally answer the appropriate question with
a No.
5. ESC I will now interrupt any multiple substitution (even a one-page
type) after the next substitution.
∂8/20/77 -- New ⊗O command is just like ⊗XBACKGO<cr>--goes back to Old page.
Also:
⊗XBACKGO command fixed to remember place to return to over ⊗XAPPEND command.
Rare bug in file macros fixed (used to cause ill mem refs).
∂8/23/77 -- Bug in /R/F mode fixed.
∂9/5/77 -- Repeated macros can now be made faster; other minor new features.
New command ⊗XCHECK enables checking of free storage (currently the default);
⊗-⊗XCHECK disables free storage checking; ⊗0⊗XCHECK reports the
current condition of free storage checking. Macros which are to be
executed many times (e.g., 100 or more) will often be executed
significantly faster if free storage checking has been disabled. It
is recommended, however, that free storage checking normally be left
enabled (except when you are repeatedly executing a macro) because
internal E errors are detected much faster that way, with less chance
for clobberage of your file.
Macro expansion fixed for use of αI not at end of line editor in macro.
Filehack \GOLD added for GRIPES.OLD[2,2]. \G still gets GRIPES.TXT[2,2].
⊗XAPPEND command now gives error message if on dir page or in unformatted file.
⊗0⊗XEXACT now reports current condition of case-checking in searches.
∂9/25/77 -- New commands αN, αβN; modified commands αO, αβO; other minor changes.
E now remembers the PREVIOUS TWO DIFFERENT PAGES that you have been on
and the PREVIOUS TWO DIFFERENT LINES that you have been at on the current
incore page(s). Note: When you move 4 or less lines up or down, E does not
consider you to have moved enough to warrant saving your old line. Also,
the saved locations of the previous two lines are not corrected for line
insertions and deletions.
To return to the Previous Page, use αO.
To return to the Second Previous Page, use either αβO or ⊗2⊗O.
To return to the Previous Line, use αN.
To return to the Second Previous Line, use either αβN or ⊗2⊗N.
The forms ⊗2⊗O and ⊗2⊗N are easier to use than αβO and αβN on NON-DISPLAYS.
Also, someday E may remember more than two previous places, and the commands
⊗#⊗O and ⊗#⊗N will be used to get to the older places.
The ⊗XBACKGO command is identical with ⊗O (i.e., it distinguishes
between α and αβ).
Other new features:
⊗#αβK now kills # lines at the front of the attach buffer.
The αβV cmd now erases the whole screen; ⊗V now also redraws page printer.
CONTINuing (after exiting) now works even if the file has been changed by
someone else after you exited!
If E crashes without trying to write the crash file E$SAVE.TXT, the
REENTER monitor command can be used to make E write the E$SAVE.TXT
file (which will contain all of the incore text).
If the file is write-protected from you, a warning is given when opening
it in READWRITE mode and whenever you cause the "W" flag to be set.
Any /F switch given on source filename (eg, A←B/F) applies to destination
file instead.
∂9/29/77 -- ⊗P command from last page no longer causes page to be re-read.
This command given on the last page still causes the incore page(s)
to be written out, but it no longer 1) causes multiple pages to be
lost from core, 2) moves you to the top of the page, nor 3) causes
the screen to be redisplayed.
∂10/2/77 -- RPG startup of E now accepts device of edit file in AC 12.
Formerly only files on device DSK: could be edited from RPG startups.
See page 23.
∂11/17/77 -- Three minor bugs fixed.
Bug fix to ⊗XEXECUTE of /N file to avoid losing first character of file.
Bug fix to αβT and ⊗-⊗J commands given from line editor that wrapped around.
Bug fix to ⊗#αβK command to avoid screwing up internal character count.
∂11/22/77 -- Certain filehacks now imply readonly mode.
The filehacks implying /R mode are:
\DIGEST \NOTICE \DAY \DOWN \NAP \NS \PLAN \PLN
Note that the default /R can be overridden by an explicit /-R.
∂12/7/77 -- READ command changed to BOOK. READ now reads documentation files.
The monitor command BOOK has replaced READ for reading a book and having
E remember your place in the book with a .BKP file.
The monitor command
READ <filename>
searches the system documentation disk areas for the file specified and
then edits in Readonly mode whatever file was found. Thus you don't
need to specify either the extension or the PPN of documentation files.
If no extension is given, then files with extensions other than UPD
will be found before UPD files. However, any explicit extension,
project, or PPN given will be observed. If an extension is given but no
PPN, E will look for the particular file on any of the documentation
areas. If a project is given, say PRJ, then E will look for the file
on [PRJ,DOC]. If a programmer name is given, then no searching of
documentation areas will be done and normal PPN scanning applies and
the READ will merely force the file to be edited in Readonly mode.
The switch /D (for Document) does the same thing as the READ command
and is useful when giving a filename when switching files.
Examples:
READ UUO ;Edits the UUO Manual file in Readonly mode.
⊗εMONCOM/D ;Switches to the Monitor Command Manual in Readonly mode.
READ UUO.UPD ;Edits /R the update file for the UUO Manual.
READ NOTICE/E ;Edits /R the NEWS program's text file, starting at the End.
Other new stuff:
Verification of the need to reformat a file is suppressed in /F mode.
The sense of the Yes/No question about keeping an old (invalid)
directory has been inverted for consistency. Say "Y" to flush the
old directory text.
A file with a "bad" extension (eg, .DMP) will now be edited if no file
with a good extension exists when you give a file's name without an
extension.
The initial default PPN for ⊗XEXECUTE and ⊗XPUTDEFS is your logged in PPN.
Macros defined during macro expansion are not typed out. This
particularly effects macros defined in an EXECUTE file. A suggestion
is that you put the command α0αXDEFINE⊗↔ at the end of your EINIT.CMD
file to have the names of all defined macros typed out.
∂12/11/77 -- EREAD monitor command is like ETV but forces /R mode.
Also:
The ⊗XDEFINE command is now legal from line editor.
∂12/20/77 -- Greater-than sign as extension means largest numeric extension.
For example, ET FOO.> will edit the FOO.* file whose extension is the
largest numeric value. E.g., if only FOO.20 and FOO.100 exist, then
ET FOO.> will edit FOO.100. If no file is found with a purely
numeric extension, then ET FOO.> will say File Not Found: FOO.>.
1978
∂04 Jan 78 -- Minor additions and fixes.
The /R switch in a BOOK command no longer disables the use of a
.BKP file. This change makes BOOK <file>/D work as well as
BOOK <file>/R.
The BOOK command positions the user on page 2 when starting a new
book that has an E directory.
E now correctly remembers your place when you exit from a file
with multiple pages in core.
The \FORWARD filehack has been added for editing MAIL's forwarding
file in /R mode. User's should not attempt to change that file.
∂19 Feb 78 -- ⊗N,⊗O,⊗H. File interlocking. Line numbers. More.
⊗N,⊗O,⊗H commands for returning to previous lines, pages, or files:
The commands ⊗N,⊗O,⊗H make use of three corresponding "stacks" of
places you've been at recently: the LINE STACK (⊗N) of lines currently
in core, the PAGE STACK (⊗O) of pages NOT currently in core, and the
FILE STACK (⊗H). Each of the ⊗N,⊗O,⊗H commands works with the
corresponding stack; all of these commands interpret arguments in the
same way and all distinguish between α<cmd> and αβ<cmd>. You can
return to the #th previous place, and/or you can "pop" # places off the
stack, and/or you can "repush" # places back on the stack. See p. 32
for the complete explanation of these three commands and NOTE THAT
αβH IS CHANGED FROM ITS PREVIOUS MEANING.
Line insertions and deletions (including attachments) are now accounted
for in the line stack, and the justify commands update both the line
stack and line marks appropriately. ⊗XCANCEL preserves the line stack
but deletes entries in it for lines that no longer exist. Note that
⊗XCANCEL still restores the line marks to their state when you last
wrote out the page.
When you return to a previous file (whether by number or by explicit
filename), the top part of your page stack from that file is restored
along with all line marks from that file.
Multiple consecutive FF and VT (and ⊗W) commands do NOT remember (on the
line stack) intermediate stopping places. But ANY command besides FF,
VT, ⊗W, and ⊗0⊗N will cause the current line to get remembered. While
you are FF/VTing around a page, the αN command will take you back where
you started the current string of FF/VT commands (even if you are
already there!) and will remember, of course, the line you are leaving.
The directory search commands ⊗F<string>αβP and ⊗F<string>⊗: and the
extended search command ⊗XFIND no longer spuriously remember the top
line of the page they leave you on. The paragraph and message movement
commands ⊗!<cr> and ⊗∂<cr> no longer spuriously remember the first line
of the paragraph or message (e.g., if you came from the middle).
To get the old meaning of arguments to the ⊗H command (page number to
return to), use the new ⊗XHOME command, which works like the old ⊗H
command.
File interlocking:
E now makes sure that someone else hasn't changed your file out from
under you when you try to (1) CONTINUE after an ENTER failure (e.g.,
when you try to write out a page while someone else is reading the
file) or (2) change the protection of the file and fail because of a
protection violation. E also opens the file in Read-Alter mode
before trying to ripple, in order to make sure no one else has the
file open. This should prevent all of the screwups that were
formerly possible when two people simultaneously tried to edit the
same file.
There is a new command ⊗XOPEN which opens the current file in Read-
Alter (RA) mode (⊗XOPEN is not legal in Readonly mode). You should only
use this command if you intend to make some change to the current file,
since such opening of the file in RA mode will update the date/time
written to the present. THIS COMMAND IS NEVER NEEDED -- E will still
open the file in RA mode automatically when you first try to write out a
page -- but ⊗XOPEN is useful if you intend to make some changes to a
file and you want to make sure that when you actually do write out a
page, no one reading the file will cause you to get the ENTER FAILED
message that leaves you talking to the monitor with only two
alternatives: CONTINUE to try again and REENTER to write out the incore
text in your E$SAVE.TXT file. Note, however, that the ⊗XOPEN command
has no failure return -- if it can't open the file, this command itself
generates the same ENTER FAILED message and the program stops and waits
for you to type CONTINUE (or REENTER).
New command ⊗XNUMBERS:
E now lets you select whether or not you want line numbers typed out.
This mainly affects users on non-displays. The command ⊗XNUMBERS
enables typing out line numbers and the command ⊗-⊗XNUMBERS disables
typing line numbers. The current initial default is ⊗XNUMBERS.
Miscellaneous other features:
Macro expansion is stopped (unconditionally) if a macro tries to stuff
more text into the line editor than E has room for in its buffer.
Note that E's buffer is considerably bigger than the line editor's,
so it is still possible to lose some text (without stopping any macro)
if a macro's line editor text is slightly too long for the line editor.
When a file needs to be reformatted, E will not consider discarding the old
directory's text unless that directory ends with a formfeed.
Whenever the E$SAVE.TXT file is written, E's TMPCOR file is also written.
The switch /l,pM is a no-op when switching to the ? file or to a file
that you have already been in (results from restoring line marks for
that file).
A few other infrequent bugs have been fixed.
∂03 Mar 78 -- Several minor new bugs/misfeatures fixed (and one old one).
Bug fixed in typing the name of the file being flushed from the filelist
when the filelist is full.
The input buffer is now cleared just before E exits to await the user
typing CONTINUE to retry an ENTER (or LOOKUP or OPEN).
Bug fixed to checking file for having changed when CONTINUEing after
file busy when extending file from last page.
Bug fixed in ⊗XPROTECTION NNN command to actually change protection
(was no-op for last two weeks).
Insert mode on non-display in -XNUMBERS mode gives prompt and starting
line number but no subsequent line numbers.
Fix to avoid wasted core (1K) at end of upper segment (old bug).
∂10 Mar 78 -- Tmpcor file now includes top three files in stack, plus page stacks.
E now remembers in its tmpcor file the top three files of your file
stack, plus the top part of the page stack of each file. Thus these
files will be restored to your file stack when you next give an ETV or
EREAD monitor command, whether or not that command specifies a file to
edit. Line marks are remembered and restored for each of the three
files remembered. Remember that you can flush your file stack (should
it get too cluttered) with the command ⊗0⊗∃, which makes E forget about
all files but the one you are in.
To allow specifying page stack entries in switches (e.g., in tmpcor
files), a new switch has been added: /x,yO pushes the place of page x
and line y onto the page stack. This switch cannot, however, be used
when editing (by explicit name) a file which E already knows about,
since in that case E will restore the file's previous page stack.
To allow multiple files to be specified (e.g., in tmpcor files), E has
been made to accept multiple filenames (and switches), separated by
commas. Multiple filenames can be typed whenever E is accepting the
name of a file to be edited (e.g., in the original monitor command or in
the ⊗ε or ⊗λ filename line). The first file listed will be edited and
the rest will be pushed (in the order given) onto the file stack (this
means that the second file listed will end up pushed most deeply in the
stack and the last file listed will end up near the top of the stack.
Note that if you are switching files (except by ⊗+⊗H or ⊗-⊗H), the file
you are leaving will end up being pushed onto the stack AFTER the
additional filenames you give in the filename line.
Editing a previous file by explicit name (e.g., ETV FOO or ⊗εFOO<cr>) now
positions you at the page and line where you left that file (unless you
specify otherwise with switches, or unless that file has had some pages
added and you haven't actually edited it with the current core image, in
which case the default position is still the first added page). Note
also that line marks and the page stack for that file are restored even
when switching by explicit name. Thus switching by explicit name now
restores everything that switching by any other mechanism restores,
except for readonly status, which is implied by the ⊗ε or ⊗λ (but which
can be overriden with /R).
The new extended command ⊗XTHISPAGE is useful for going from multipage
mode (two or more pages in core) to single page mode (one page in core).
This command writes out the incore text and then reads in only the page
where the arrow is. The position of the arrow and (when possible) the
window are preserved. However, the line stack is currently cleared.
The extension S1 has been added to E's good extension list, and the
extensions LDI and RIM have been added to the bad list (file never
edited unless extension given explicitly or unless only one file exists
with the given primary name).
Readonly mode is forced (and announced) on an attempt to edit any
non-formatted file that is write-protected from you. Formerly, you got
the error halt "ENTER FAILED, PROTECTION VIOLATION" upon an attempt to
edit such a file.
A bug has been fixed which caused any appropriate /N to be left out of
the tmpcor file and the header line whenever the filename extension was
blank.
∂12 Mar 78 -- Improvements in new stuff.
(See previous message first, if you haven't already read it).
Editing a file that has been extended (e.g., a message file) starts at the
FIRST NEW PAGE if the file either (1) is named explicitly (with no
page-specifying switch, e.g., ⊗ε∂<cr>), (2) is the first file edited in
that core image (e.g., ET ∂<cr> or ET<cr>), or (3) has changed between
exiting and CONTINUing. Otherwise, an extended file will be edited
starting at the page and line where you were when you left that file
(that is, switching files by explicit number (e.g., ⊗2⊗λ) or with the ⊗H
command will always return you to the page and line you were previously
positioned at, even if the file has been extended before or since then).
Whenever the /nP switch is used to start editing at page n, the default
line (if no line switch is given) is now always line 1.
Filenames read from tmpcor are assumed complete, even though they may
contain no device name or PPN.
The ⊗XHOME command (old ⊗H cmd) now uses (the top of) the new file stack
(for going to a relative or absolute page in home file).
The /-R switch now properly disables readonly mode even if ⊗λ was given.
The ⊗XTMPCOR command now forces subsequent exiting and file switching to
write out the tmpcor file, making it appear you used a standard E
monitor command (like ETV) to run E (instead of using, e.g., the monitor
command R E, which normally suppresses writing out of the tmpcor file).
∂14 Mar 78 -- Improved line insert mode (affects display users only):
IMPORTANT CHANGES to ⊗I, αβ<cr>, αβ↑, αβ↓, αβ. and new αβ<tab>.
It is now possible to get into line insert mode without having a new blank
line added. To do this, type either αβI from the middle of the line
editor (that is, while editing a line) or ⊗I from the end of the line
editor. These commands will turn on line insert mode and leave you
positioned wherever you are, but the next <cr> you type will create a new
line. Note that, having used ⊗I thusly, if you then type <altmode> with
any text in the line, that text will be saved -- the altmode will not
restore any version of that line that existed before you edited it. If
you don't want the final edited text you have, you can get back the text
as of the ⊗I command by clearing the line editor (e.g., type <clear>) and
then typing <altmode>. This means that ⊗I from the line editor (not
including αI when interpreted as a line editor command) saves the current
text of the line (in core -- not on the disk) thus preventing you from
getting back (with altmode) a previous version of that line.
There has also been a small constructive change made to the αβ<cr> command
when given from the middle (not end) of the line editor. This command now
breaks the current line in two, as before, but instead of inserting a
blank line between the two halves and leaving you there in line insert
mode, it merely leaves you at the end of the first part of the line in
line insert mode, without adding a new blank line. This new effect should
be much more useful than the old version.
Note that these changes make αβI behave differently from αβ<cr> when in
the line editor. The meanings of these two commands outside the line
editor are unchanged; in that case αβI and αβ<cr> do the same thing,
namely, put you into line insert mode on a new blank line. Also, whenever
any numeric argument is given to either of these commands, the old meaning
is still in effect -- namely, to insert N blank lines (and not leave you
in line insert mode).
To make line insert mode on old text lines easier to get into, two old
commands and one new one have been made to enter line insert mode if both
α and β are on. These commands are αβ<tab> and αβ↑ and αβ↓. The latter
two still go to the end of the line above or below, but now also enter
line insert mode. The αβ<tab> command is just like α<tab> (goes to the
end of the current line) except that it also enters line insert mode.
Notice again that if you type αβ<tab> while in the line editor, the line
editor text is saved at that point and a subsequent <altmode> has its
usual line-insert-mode meaning.
Another important (and related) new feature is the ability to write out
the page from the line editor with the αβ. command (must have both α and β
in order to work). This command writes out (to the disk) the text that is
currently in the line editor (as well as the rest of the page) and then
leaves you in the line editor (in line insert mode if you were in it
before). A subsequent <altmode> typed on that line will not restore the
original text of the line; if you are NOT in line insert mode, it will
restore the text that was written out, and if you ARE in line insert mode,
the <altmode> will have its usual line-insert-mode effect. Note that
writing out the page from inside the line editor may cause E to Ripple the
file, even though you may not see any X (or W even) on the header line,
since the display is not updated before writing the page out.
Remember that in all cases, if you type <altmode> from a NON-EMPTY line
editor while in line insert mode, the line editor text is retained for
that line and you leave line insert mode. If you type <altmode> from an
EMPTY line editor in line insert mode, you leave line insert mode with
either the saved text (if any) for that line restored (if you typed ⊗I or
⊗<cr> or αβ. in that line) or the (empty) line deleted.
∂15 Mar 78 -- Bug fixed; window restored on returning to a file.
Bug fixed to properly remember in tmpcor file the values of the /R switch
for all filenames written in tmpcor.
Also, the window position is now preserved and restored upon switching
files and returning. Currently, the window positions for page stack
entries are not written out in the tmpcor file, except for the last page
and line you were at in the file.
∂17 Mar 78 -- Window position saved/restored with line stack.
E now remembers the window position of each line in the line stack. When
you return to a line via ⊗N, the old window associated with that line is
restored unless the line was already on the screen, in which case the
window is not changed.
∂01 Apr 78 -- New ⊗XPOINTER cmd, justification simplifications,
plus ⊗0⊗∃ and ⊗0αβM replaced, new commands to clear stacks, and more.
The new ⊗XPOINTER command is used to switch to a file whose name is
found in the text of the page you are editing, at or below the current
line. With an argument of zero, the command ⊗0⊗XPOINTER will merely
move to the line containing the filename found (if any) and type out the
filename, but will not switch files. The command with no argument moves
the arrow to the line containing the filename found (if any) before
attempting to switch files.
A filename in the text will not be recognized unless it is preceded by a
space (or tab) or occurs at the beginning of a line. Furthermore, to be
accepted by this command, a filename must have at least one of these:
(1) an explicit (non-null) extension, (2) an explicit (complete) PPN,
(3) one or more switches, or (4) a valid filehack. Spaces are permitted
only as leading spaces in PPNs for blank characters in the project or
programmer name, and a filename with its switches must occur all on one
line. Thus the following filenames will be recognized:
FILE/-R, FILE.E, FILE[J,G], FILE.EXT[J,G](R9P7L), FILE.[ J, G], \GRIPES.
The following will NOT be accepted: FILE., FILE[X], FILE/6PR, F[ ABC,D].
The only characters permitted in names within the filename are letters
(case of letters is ignored), digits, and the underbar character (which
represents a quoted space). In particular, the down-arrow construction,
the partial-sign name, and the question-mark name are not permitted in
filenames. Also note that only the first filename on a line will ever
be detected.
Any switches following a filename in the text will be observed in
switching to that file. In addition, any text in the extended command
line after the name of the command will be appended to the filename and
switches found in the text. Thus additional (or overriding) switches
can be specified, or if no PPN or switches appear in the text, an
explicit PPN can be added. Switches in the text must be perfectly
well-formed or the filename they are applied to will not be recognized.
This means that parentheses must be balanced and no letter or digit can
immediately follow the letter of a slash-type switch. However, the
actual letters of switches are not checked for validity (as indeed they
never are by E -- undefined switches are completely ignored).
This command's default mode for switching to a file is readonly (/R).
However, this can be overriden with an explicit /-R occurring among the
switches in the text or typed in the command line after the extended
command name (e.g., ⊗XPOINTER /-R<cr>).
When you attempt to switch files with this command, if the file named in
the text cannot be edited because it does not exist, is busy, etc., E will
abort the fileswitching operation automatically (nevertheless having
written out the current page before attempting to switch files). If,
however, the combined (text and command line) filename with switches has
an illegal syntax, E will say so and then load your line editor (on
displays) with the combined text so that you can correct it and try again.
CLEARING STACKS AND LINE MARKS:
The commands ⊗0⊗∃ and ⊗0αβM no longer clear the file stack and line mark
list. These commands have been replaced with explicit extended commands.
Also, two new extended commands are provided for clearing the page and
line stacks. These four new commands are:
⊗X ZFILES ;Zero (clear) the file stack
⊗X ZPAGES ;Zero (clear) the page stack
⊗X ZLINES ;Zero (clear) the line stack
⊗X ZMARKS ;Zero (clear) all line marks
JUSTIFICATION SIMPLIFICATION: REMOVAL OF SWITCHES (MODES)
The justification commands in E no longer accept the various switches
formerly used. Now a simple procedure is used to determine where
paragraph breaks occur in the input text being justified. For
justification purposes, a new paragraph is indicated by (1) an empty line
or (2) a line indented exactly the right amount (that is, a line having
the right number of leading blank columns, whether tabs or spaces or both
are used to make the indentation).
The amount of indentation that indicates a paragraph in the input text
will be called the DETECT-PARAGRAPH margin, or simply the DETECT margin.
Note: If you haven't set the detect margin explicitly (see below), and if
the crown margin and the left margin are the same, then only blank lines
will indicate new paragraphs in the input text (otherwise every line would
become a separate paragraph).
The detect margin is normally the same as the crown margin. However, for
changing the crown margin of justified text that has no blank lines
between paragraphs, the detect margin can be set explicitly to any value.
The detect margin can be set in any justification command by typing its
value immediately after the extended command name and following it with a
slash ("/"). After the slash, the normal margins (crown, left, right,
blank) can be specified, separated by commas. For instance, the command
⊗XJUST 8/7<cr> would set the detect margin to 8 (for paragraphs indented
with one tab or eight spaces) but would cause the text to be rejustified
so that each paragraph was indented only 7 spaces. Note that the detect
margin is sticky until you change either the crown margin, the left
margin, or the detect margin itself. Thus after the above command, E
would no longer recognize the new crown lines (now indented 7 spaces) as
such since the detect margin would still be 8. The detect margin can be
set without changing any of the other margins, as in ⊗XJUST 7/<cr>. The
command ⊗XJUST 8<cr> explicitly sets the crown margin to 8 and implicitly
also sets the detect margin to 8.
To find out the current margins and what indicates a paragraph, use an
argument of zero with a justification command, for example ⊗0⊗XJFILL<cr>.
This change affects the extended commands:
JUST JFILL JGET SJUST SJFILL TJUST TJFILL TJGET
Note that the last three of these use a separate set of margins (detect,
crown, left, etc.) from the rest.
EXTENSION TO FILEHACKS FOR SPECIFYING A PROGRAMMER NAME:
The filehacks \MAIL, \PLAN, and \NS can now have an explicit programmer
name specified, in which case the mail, plan, or notification file for the
named programmer is read instead of your own. To specify a programmer
name, follow the filehack name immediately with a colon (:) followed by
the desired programmer name. For instance, \MAIL:FOO represents FOO's
mail file, and \PLAN:BAZ is BAZ's plan file. The new ⊗XPOINTER command
will recognize these programmer-name filehacks (as well as the normal
filehacks). The filehack names themselves can be abbreviated as usual
(e.g., \M:FOO is FOO's mail file). The programmer-name filehack facility
is designed for non-display users, since display users could already enter
a filename like ∂FOO or ∂BAZ.PLN.
MAILING FROM E WHEN THERE ARE NO JOB SLOTS:
When there are no job slots for E to start up a MAIL job, mail sent from E
is now queued (by writing it into a special file on RMD,SYS which will get
processed later automatically). You are told when this is happening, and
you will eventually be notified of the success or failure of the mail
delivery.
Also, whenever the MAIL program detects an error in mail coming from E, it
will now mail the whole message and command back to the sender with an
appropriate message prefixed to it.
BUG FIXES:
Bug fix to ⊗XJOIN given on an empty line.
Bug fix for αβV typed from line editor.
⊗XREDFINE and ⊗XDEFINE called from inside a macro and ⊗XEXECUTE called at
any time no longer change the current default macro called by the ⊗Y
command.
∂06 Apr 78 -- ⊗-⊗XNUMBERS made default (no line numbers typed out).
Users who want line numbers typed out with the text must now enable them
by giving the ⊗XNUMBERS command, since the default is now to omit the
line numbers (by popular demand).
Also, the ⊗L command (move to specific line) is now permitted from the
line editor. Note that to get this command to E, however, you must
either (1) type αβL rather than αL, which is a line editor command, or
(2) precede the ⊗L with a (signed or unsigned) argument. And to enter
an unsigned argument from the line editor, the first digit must be typed
with both α and β (since α<digit> is taken as a line editor argument and
doesn't get to E).
∂09 Apr 78 -- Minor improvements to ⊗XPOINTER command.
The ⊗XPOINTER command no longer recognizes filenames in the text that are
less than four characters long (including their switches), except for
filehacks, which can be any length. Thus "A.I" and "F/X" will not be taken
as filenames.
Also, a numeric argument can be given to the ⊗XPOINTER command to have it
find the nth filename in the text; thus it is now possible to switch to
any of several files all named on a given line. An arg of the form ⊗#
will make E merely type out the #th filename, without moving the arrow and
without switching files. An arg of the form ⊗+⊗# means switch to the #th
file named in the text; this is conveniently done right after the ⊗# form
has verified that the filename found was the one you wanted to switch to.
Since ⊗# doesn't normally move the arrow (so that you can then say ⊗+⊗#
without having changed the significance of the number), an arg of the form
⊗-⊗# finds the #th filename and moves the arrow to that line but doesn't
switch files.
Summary of meanings of ⊗XPOINTER args:
arg meaning
(none) Switch to first file named in the text at or below current line.
⊗0 Type out the first filename in the text, and move to its line.
⊗-⊗# Type out the #th filename in the text, and move to its line.
⊗# Type out the #th filename in the text (without moving).
⊗+⊗# Switch to the #th file named in the text.
∂21 Apr 78 -- Minor fixes and new commands for getting info on non-displays.
ETV<cr> edits the previous file at same place as before, even if the
file has been extended. ETV <filename><cr> will still position you
at the first new page if the file has been extended.
CETV command sets up the file stack from the tmpcor file.
CETV<cr> is exactly like ETV<cr>; that is, it does NOT create a file,
but edits the previously edited file.
The ⊗XTRAILER and ⊗XHEADER commands type out the header and trailer lines,
respectively. These are useful on non-displays for getting some of the
information that is not otherwise obtainable.
The CRLF is suppressed on non-displays after ⊗∂ or ⊗! cmd and after OK.
∂25 Apr 78 -- Null filename during switching represents the file you just left.
It is now possible to switch to the current file (for purposes of
specifying different switch settings, like /∞F for burping the whole
file) without having to type the actual filename. If you omit the
filename requested by the ⊗ε or ⊗λ command, but you do include one or
more switches, then the file assumed will be the one you just left
(upon the ⊗ε or ⊗λ cmd). Thus the command ⊗ε/∞F<cr> will burp your
whole file and ⊗ε/Q<cr> will format a /N file with an E directory.
Also, the ⊗XPOINTER command will now recognize filenames that are preceded
by a double quote ("). This allows REQUIREd filenames in SAIL and PUB
to be spotted by this command (eg., REQUIRE "FOO.SAI" SOURCE_FILE).
∂15 May 78 -- αβ↑ and αβ↓ and line insert mode on blank lines.
The commands αβ↑ and αβ↓ now put you into line insert mode even if
the line you are taken to by the command is empty. Formerly, when
arriving at an empty line, these commands would NOT put you into the
line editor at all, and therefore not put you into line insert mode.
The commands α↑ α↓ ⊗; ⊗: still do not put you into the line editor
if the line is empty.
∂23 May 78 -- Bug fixes to justification and TIN/SIN commands.
Two bugs have been fixed in the justification and TIN/SIN commands.
One bug affected positioning of the arrow after justification on the
second (or later) of multiple incore pages; this bug also sometimes
caused a fatal error to occur later, when the page was being written
out. The other bug was in attempts to TIN or SIN a null range
resulting from the arrow being on the row of stars at the end of the
incore text. These were both old bugs.
Also, ⊗XBEEPME is now legal from the line editor.
∂27 May 78 -- More bug fixes to justification.
More justification bugs fixed for multipage mode.
Flushed BEEPing of TTY32 on errors!!!
∂29 May 78 -- New switch /X for bloating a file, plus misc. other stuff.
The new switch /#X causes E to reformat the file and bloat each page
(except the directory) by # records of nulls (after discarding previous
records of nulls (except on the directory page)). This switch also
disables auto burping. Thus this switch is useful when you are about
to perform a large amount of editing which might have otherwise caused
rippling several times. If the number # is omitted (i.e., "/X"), then
the default bloat amount is used, which is currently 3 (records). The
bloat amount is limited to prevent the resulting file from becoming
bigger than 256K; however, since this switch can still make a file very
big, care should be taken to avoid wasting disk space unnecessarily.
Note that you can unbloat (i.e., burp) a file with /∞F.
New switch /#A sets auto burp threshold to #. /-A disables auto burping.
The effect of this switch is global; i.e., it applies to all files edited.
TMPCOR file includes /-A (global for all files) if auto burping is disabled.
The user is now beeped when the line editor fills up and activates.
⊗-⊗0<ff> is now just like ⊗0<vt>, and ⊗-⊗0<vt> is same as ⊗0<ff>.
With an even screen size, the cmds ⊗0<ff>, ⊗0<vt> and ⊗0⊗W position the
arrow just below the center, like ⊗0⊗∨ has always done.
∂31 May 78 -- Bug fixes to justification commands.
Fixes to ⊗XTJUST and ⊗XTJFILL commands to make them work again.
Fix to ⊗XJGET and ⊗XTJGET to do nothing if no text to examine and to
use previous text if arg is negative.
Bloating by /X is suppressed on the last page of a file and is limited
to avoid making the file more than twice its previous size.
∂4 Jun 78 -- *** αβ! and αβ∂ will soon be different from α! and α∂ ***
*** COMING SOON TO AN E NEAR YOU: ***
Soon, the αβ versions of the ! and ∂ commands will have a slightly
changed meaning. The α versions of these commands will be unchanged,
so users should NOW get used to using α! and α∂ for the old meanings.
The new αβ versions, which are NOT UP YET, will pretend that the
current line IS THE FIRST LINE OF A PARAGRAPH OR MESSAGE (depending on
whether you used the ! or ∂ command). This will be particularly useful
when you want to justify, attach, type out, etc., the REST of the
current paragraph or message. It will also be useful for justifying,
attaching, etc., the previous part of the paragraph or message.
Also, another justification bug has been fixed.
∂18 Jun 78 -- Header line displays "/-A" while autoburping is disabled.
∂22 Jun 78 -- New undeleting and Lisp-indenting and MODIFIED αβ! αβ∂ commands.
NEW COMMANDS FOR LISP USERS
The α/ and αβ/ commands now parse Lisp S-expressions and indent lines
accordingly (with tabs and spaces as needed). Text is never moved from
one line to another; only the indentation of each line is subject to
change. The ⊗#α/ command indents # lines (default is 1) starting at the
current line. Except in attach mode (see below), the ⊗#αβ/ does the same
thing as ⊗#α/ but first moves down a line (keeping you in line insert mode
if you are already in it). Both α/ and αβ/ without an arg indent one line
and leave you in the line editor positioned just after the indentation
(αβ/ moves down a line first, of course). When an explicit arg is given,
neither command leaves you in the line editor. All forms of ⊗/ can be
given from within the line editor. The indentation set up is determined
by examining the S-expression which starts at or just before the current
line, where the beginning of that S-expression is defined by the nearest
left parenthesis occurring in the first column of a line (or by the
beginning of the current page if no initial left parenthesis is found).
In attach mode, the α/ command does not look for any context before the
first line of the attach buffer, but the αβ/ command looks back into the
normal page text just ahead of the attach buffer to allow you to indent
the attach buffer while positioned at the proper place on the page. A
negative argument to either command means to indent the given number of
lines before the current line (with or without moving down a line first,
depending on whether the command has αβ or just α); in attach mode a
negative argument makes the command a no-op. The parsing of S-expressions
is by MacLisp character set interpretation, but a command probably to be
added soon will allow different character interpretations. For more
details, see GLS.
UNDELETING LINES
Deleted lines are now saved (up to a certain limit) in the delete stack
and can be undeleted with the ⊗XUNDELETE command. Undeleted lines are
inserted at the beginning of the attach buffer (even if no lines were
previous attached). The limit of deleted lines saved is indicated by a
(settable) maximum number of deleted characters; this limit is initially
5000 characters (approximately 1K of core). However, this limit is
allowed to be surpassed by a single command that itself deletes more than
the current limit of deleted characters. Thus the text deleting of any
command (except ⊗XCANCEL, which doesn't save in the delete stack the text
being cancelled) can be undone immediately, provided that no other
command that deletes lines is executed first. And, of course, even if
another deleting command is executed, the earlier deleted lines can still
be undeleted if the maximum character count for deleted lines is not
exceeded. Lines are undeleted in the opposite order from their deletion;
that is, deleted lines go into a stack. When the maximum deleted
character count is caused to be exceeded by a newly deleted line, the
oldest deleted lines (on the bottom of the stack) are flushed (forever)
until the character count is brought back within the limit, but lines
deleted by the current command are never flushed until another command
deletes some lines. When a line has been undeleted, it is no longer on
the delete stack and can't be undeleted again (unless it is re-deleted).
Now for what the various forms of the command do:
⊗XUNDELETE Undeletes (into the attach buffer) the last group
of lines that was deleted by a single command,
unless those lines have already been undeleted, in
which case this command (with no argument) won't
do anything (but complain).
⊗#⊗XUNDELETE Undeletes # lines (into the attach buffer).
⊗0⊗XUNDELETE Tells how many lines and characters can currently
be undeleted, and it will also tell what the
current deleted character limit is.
⊗-⊗#⊗XUNDELETE Sets the deleted character limit to # characters
(note the negative argument).
MODIFIED αβ! AND αβ∂ COMMANDS!
The αβ versions of the ! and ∂ commands now have a slightly changed
meaning. (The α versions of these commands are unchanged, so users
should now always use α! and α∂ for the old meanings.) The new αβ
versions pretend that the current line IS THE FIRST LINE OF A PARAGRAPH
OR MESSAGE (depending on whether you used the ! or ∂ command). This is
particularly useful when you want to justify, attach, type out, etc., the
REST of the current paragraph or message. Thus, with αβ the part of the
current paragraph or message before the current line is considered to be
in a different paragraph or message. The ⊗-αβ! and ⊗-αβ∂ commands (note
the negative argument) are useful for justifying, attaching, etc., the
PREVIOUS part of the current paragraph or message.
MISCELLANEOUS
The ⊗F<string>⊗P and ⊗F<string>⊗: commands point out by saying "(incore
page)" when the resultant page turns out already to have been in core.
This lets you know whether to use αN or αO to get back where you came
from.
The ⊗XCORCHK command has been added to make E try to core down if
possible. There may be certain situations where E doesn't automatically
core down as much as possible immediately, but this command will force it
to core down if appropriate. Users NEVER REALLY NEED to use this command.
A bug has been fixed that made file formatting rejected on a file switching
command following a file formatting command of the form FILE1→FILE2.
Another bug has been fixed that caused a duplication of the home file in
the file stack when the αβ? command was aborted because the file was busy.
∂23 Jun 78 -- Bug involving blank lines fixed in ⊗/ commands.
Also, the current line is not checked for the beginning of an S-expression
(normally indicated by a left parenthesis in column 1) when an ⊗/ command
is given without an argument (indents current line as appropriate to
previously started S-expression, and leaves you in the line editor beyond
the indentation).
Also, a minor DM display bug has been fixed that occasionally caused the
row of stars to be duplicated on the screen.
∂30 Jun 78 -- Minor fix plus new feature in ⊗/ command. ⊗XLISPSYNTAX cmd.
Bug fixed in ⊗/ with respect to vertical bars.
The ⊗/ command now recognizes "super-brackets". This makes ] in the text
equivalent to enough )'s to close back to the matching [, or to close all
hanging ('s if no hanging [ is present to match.
The ⊗XTV command has been flushed since the TV editor is no longer available.
The information typed by ⊗0⊗XINDENT and ⊗0⊗XALIGN is now more descriptive.
NEW COMMAND: ⊗XLISPSYNTAX
A new command ⊗XLISPSYNTAX has been implemented for examining and
modifying the syntax table which drives the ⊗/ (LISP indentation)
command. This table has one entry for each of the 128. (200 octal)
characters. Each entry consists of one or two characters which
describe a LISP character syntax category. The second (or only)
character is a mnemonic for the role played in the syntax of LISP
S-expressions. The first character of two is an auxiliary character
used for certain kinds of matching, e.g. of string quotes or super-
brackets. The syntax types are:
TYPE NAME AUX? CHARACTERS WHICH INITIALLY HAVE THAT SYNTAX
( left paren no (
) right paren no )
[ left super no [
] right super yes ]
/ char quoter no / %
' quote macro no ` ' ,
| string quoter yes | "
↔ carriage return no CR
; semicolon yes ;
space no NULL TAB LF VT FORM SPACE BS
A letter no all others (e.g. A-Z a-z 0-9 + - * @ # α β ε ...)
(This initial arrangement represents a compromise between MacLISP and
InterLISP syntax. In MacLISP, there are no superbrackets, and only /
(and not %) is a character quoter. In InterLISP, only % (and not /)
is a character quoter; | does not serve as a string-like atom delimiter;
and semicolon is not a comment character.)
The auxiliary character is used for only a few special cases.
For a right superbracket, it is the character which is the matching
left superbracket. (Thus one can have several independent pairs
of superbrackets, in principle. This may not square with InterLISP
superbracket semantics, however.) For a comment character, it is
the character which terminates the comment. For a string quoter
it is the character which terminates the string (normally the same
one which begins it, but this extra flexibility is provided anyway).
The syntax table can be modified using the command:
⊗XLISPSYNTAX<space><octal of char to be affected><space>
<optional auxiliary char in octal, followed by space>
<representative mnemonic syntax char><CR>
Examples: to make < and > be parentheses, one would do:
⊗XLISPSYNTAX 74 (
⊗XLISPSYNTAX 76 )
To make % not be a character quoter, but only a letter:
⊗XLISPSYNTAX 45 A
To make ⊂ and ⊃ be superbrackets, one would say:
⊗XLISPSYNTAX 20 [
⊗XLISPSYNTAX 21 20 ]
The extra "20 " in the second one is needed to specify that ⊃ is
matched by ⊂. However, the first command is also needed explicitly
to define ⊂ as a left superbracket.
The command
⊗-⊗XLISPSYNTAX<CR>
resets all the interpretations to their initial default.
Finally, the command
⊗XLISPSYNTAX<space><octal of char><CR>
will merely cause E to type out the current interpretation of the char
given in octal.
In Terse mode (see ⊗XTERSE command), the typeout resulting from the
⊗XLISPSYNTAX command is suppressed except in the last case shown (which
is an explicit request for this typeout).
∂7 Jul 78 -- Two bugs fixed in ⊗/ cmd.
Bug fix to ⊗/ to adjust internal tabs correctly.
Bug fix to ⊗/ to avoid infinite loop resulting from superbrackets.
Also, autoburping suppressed if file is about to be deleted (eg, from ⊗∂αβD).
∂14 Jul 78 -- ⊗XSILENT command suppresses error messages inside macros; more.
The ⊗XSILENT command suppresses error messages that are generated inside
macros except when such an error would stop all macros. Thus SILENT mode
can be used to speed up execution (by suppressing the error typeout) in
macros that deliberately cause errors to happen in order to abort one
level of macro execution (in ⊗XSTOPONE mode). The command ⊗-⊗XSILENT
disables this mode. The commands ⊗0⊗XSILENT, ⊗0⊗XVERBOSE, and ⊗0⊗XTERSE
all type out the status of SILENT mode (when enabled) in addition to the
status of the TERSE/NORMAL/VERBOSE mode.
Answering the queston "Discard text of old directory?" no longer implies
that you are willing to have the file reformatted. If the file needs
reformatting, then you will be asked about it separately.
Filestatus is now displayed during all file copying (including formatting).
∂17 Jul 78 -- Accidentally required /N confirmation fixed.
∂18 Jul 78 -- Misc. minor improvements.
The ⊗0αH command types stack level of each file listed; use a file's
given number in the ⊗#αH command to get to that file.
⊗XTELLME and ⊗XTMPCOR are now permitted from line editor.
⊗∞ repeat arg no longer disallowed in null substitution specification.
∂24 Jul 78 -- Improved non-display line/page number typeout.
When a pagemark (incore or not) gets deleted on a non-display, E now
always types out the new page number, line number and line count for
the new page. Also, end-of-page lines include the line number to
let you know how big the page is.
Also, the extension .FAS (MacLisp binary file) has been added to E's list
of bad extensions to avoid when no extension is typed by the user. And
the extension .LSP (Lisp) now has higher priority in the good extension
list than it used to have.
Finally, ⊗-⊗XCHECK and ⊗XCHECK (disabling and enabling of Free Storage
checking) don't type out anything in Terse mode. (⊗0⊗XCHECK still always
tells you the status of Free Storage checking.)
∂12 Aug 78 -- Fixes to ⊗XSJFILL and ⊗XSJUST commands, plus more.
⊗XSJFILL and ⊗XSJUST commands fixed to indent paragraphs and insert blank
lines properly.
The extension .TEX has been added to E's list of good extensions to look for.
CR, LF or ALT seen as switch char (eg, ⊗εFOO/<cr>) causes illegal file spec.
Main spooling errors (no jobs for spooler) still cause file to be spooled.
∂14 Aug 78 -- \BBOARD filehack added.
∂18 Aug 78 -- ⊗#⊗XAUTOWRITE command added to save page after # insertions.
E can now be made to automatically write out the incore text after a
given number of lines have been inserted in line insert mode. The
default is NEVER to write out the text automatically, but the command
⊗#⊗XAUTOWRITE will set to # (if positive) the number of inserted lines
after which E will automatically write out the page. The autowriting
will occur only upon a CR given in line insert mode, and then only every
# lines; when autowriting occurs, a message to that effect is typed out
and you are then left still in line insert mode. Only lines created with
line insert mode are included in the autowrite line counter, and the
counter is reset to zero whenever the page is written out (by any means)
and whenever you switch pages or ⊗XCANCEL. The command ⊗-⊗XAUTOWRITE
will disable autowriting (the default state), and the command ⊗XAUTOWRITE
(without any arg, or with a zero arg) will report the current status and
(if enabled) the threshold of the autowriter.
∂22 Aug 78 -- Commands to alter E's use of the display screen.
The commands ⊗XTOPSET, ⊗XBOTSET, ⊗XATTSET and ⊗XHEIGHT can be used to
alter E's use of the display screen. These commands set, respectively,
(1) the number of lines skipped above E's display (TOPSET), (2) the
number of lines in the page printer at the bottom (BOTSET), (3) the
maximum number of lines used to display the attach buffer (ATTSET), and
(4) the number of lines used to display incore text (HEIGHT). For the
complete details, see p. 33 of this file.
Also, the command ⊗0⊗M now reports how many line marks there are in the file.
Two minor display bugs have been fixed recently:
One display bug formerly sometimes caused a just-edited line to appear
twice, with one copy appearing where some other text should have.
The other display bug sometimes caused the trailer line to appear in the
page printer area at the bottom of the screen.
∂27 Aug 78 -- ⊗XBREAK and ⊗XJOIN fixed to preserve marks and line stack.
Also, ⊗XBREAK and ⊗XJOIN now accept negative args to work on the
given number of lines preceding the current line.
∂31 Aug 78 -- Minor fix to ⊗XBOTSET.
Bug fixed in ⊗XBOTSET to avoid forgetting previous wholine already
turned off by ⊗XTOPSET.
∂4 Sept 78 -- ⊗Xα<cr> to edit prev cmd; /-U switch to avoid updating file dir.
⊗Xα<cr> loads the line editor with the last ⊗X command line typed, to let
you edit it and try again. The α and β bits that you get on the edited
command are precisely what you type on the X in ⊗Xα<cr>; also any numeric
arg typed to the ⊗Xα<cr> is applied to the edited command. This feature
does not work on non-displays nor inside macros.
E also now knows about the AAO privilege that is granted by the ACCESS
program, so that E can continue to warn you about files that are write
protected from you.
E now has a /-U switch (and a ⊗-⊗XUPDATE command) that suppresses
updating the directory whenever possible. In particular, this switch is
the DEFAULT when you are editing SOMEONE ELSE'S MESSAGE FILE (on 2,2 --
this default does NOT apply to MSG.MSG files, but an explicit /-U will
work on such files). Thus if you go edit a message that you sent
someone, your edit will not screw up his "place" in the file because E
will retain the non-updated directory for him.
The maintaining of the owner's "place" (last previously existing page) in
the file works under virtually all conditions of editing a file in /-U
mode, even if it ripples or if you burp it -- however, autoburping is
never done while in /-U mode. Although the /-U switch is not displayed
to the user, its presence will be noted (on displays) when you write out
a page -- the "U" flag on the header line will appear (or not disappear
if it was already there) if the incore version of the directory didn't
get completely written on the disk.
One particular effect of /-U mode is that changing the first line of a
page will not force the directory to be written out (although it will
still cause the "D" to appear in the header, and when the page is written
out a "U" will appear in place of the "D"); thus the directory can become
inconsistent with the TEXT of the first line of each page (and if you
leave such a file without doing an ⊗XUPDATE and come back to that file
later, E won't know that the directory does not reflect the actual first
line of each page). However, the record numbers on the directory page
are NOT allowed to become invalid or inconsistent. As usual, the
⊗XUPDATE command will write out the directory (if necessary to update the
disk version), and in addition, this command will take you out of /-U
mode.
The default /-U mode that occurs when editing another person's message
file cannot be overriden with the /U switch; you must actually give the
⊗XUPDATE command to leave /-U mode, but YOU SHOULDN'T DO ⊗XUPDATE WHILE
IN SOMEONE ELSE'S FILE. (The /U switch has no use except to override an
earlier /-U switch in the same command line!)
∂12 Sept 78 -- Two minor glitches fixed.
⊗XBOTSET has been fixed to avoid spurious erase of part of screen.
Swapping to another program from E restores the wholine, if was turned off
because of ⊗0⊗XTOPSET (or ⊗1⊗XTOPSET).
∂20 Sept 78 -- Integer-valued numeric macros with numeric operations and tests.
First some minor fixes:
⊗XNDFAIL ignores down-arrows in labels, lists symbols defined by ← or =,
and doesn't allow spaces or tabs in the middle of a symbol.
⊗XUPDATE now never writes out directory unless necessary to update the
disk version. And if the incore text has been changed, ⊗XUPDATE writes
it out when writing out the directory; this is necessary for consistency
since writing out the directory may require rippling, which HAS to write
out the current page. Also, ⊗0⊗XUPDATE now simply reports the status
of directory updating (/U or /-U mode).
Bug fix to make ⊗O remember correct old pages after page deletion or insertion.
"OK" always suppressed during macro execution.
And now for...
INTEGER-VALUED NUMERIC MACROS
There are now numeric macros, whose integer values are represented by
strings of digits (optionally preceded by + or - and optionally followed
by non-digits). There are several new commands to create, operate on,
test, and apply numeric macros. Numeric macros can be "executed" just
like any other macros; the result is the typing of the simple string of
digits into the text. The CONTROL and META bits are ignored when
evaluating a numeric macro and are left OFF when E generates a numeric
macro.
When a macro is being evaluated for its numeric value, an error will
result if the macro definition doesn't start with a string of digits
(optionally preceded by + or -); the evaluation is terminated by any
non-digit (not including a leading + or -). The maximum absolute value
that can be generated without error during evaluation of a numeric macro
is 2↑35 - 1. Larger numeric values will give undefined results. The
largest possible absolute value of the repeat argument for any command is
2↑17 - 8; larger repeat arguments will be limited to this maximum
absolute value (with proper sign preserved).
The only difference between numeric and non-numeric macros is that
evaluating (as opposed to executing) a non-numeric macro will result in
an error.
⊗XSET <macro> Sets the named macro to the string of decimal
digits (possibly preceded by + or -) that
represents the command's numeric repeat argument.
This command accepts a search distance as the
repeat argument.
⊗XARGUMENT <macro> Sets up a repeat argument for the following
command from the named numeric macro. Any arg
given to the ⊗XARGUMENT command itself is added to
the value from the macro before setting the
resultant argument. If the macro's definition
starts with "+", the resultant argument will be
relative, as if ⊗+ were typed. The largest
possible absolute value of the repeat argument is
2↑17 - 8; larger repeat arguments will be limited
to this maximum absolute value (with proper sign
preserved).
Of course, all the old commands that work on macros work just as well on
numeric macros, but the following old commands deserve particular mention
here since they are important in conjunction with the new commands for
numeric macros.
⊗0⊗Z <macro> Types macro's definition.
⊗Z <macro> Executes the macro.
⊗-⊗XDEFINE <macro> Undefines the macro.
The following commands operate on the numeric value of a given macro.
If the macro's old value started with "+", then the new value will start
with "+" unless the new value is negative. CONTROL and META bits are
ignored in the macro's old value and are left OFF in the new value. As
usual, if no repeat argument is given, ⊗1 is assumed; thus ⊗XADD TOTAL<cr>
adds 1 to TOTAL. In the ⊗XDIVIDE and ⊗XREMAINDER commands, the remainder
has the same sign as the dividend and the quotient is not rounded.
⊗XMULTIPLY <macro> Multiply macro's numeric value by given repeat arg.
⊗XDIVIDE <macro> Divide macro's numeric value by given repeat arg.
⊗XREMAINDER <macro> Make macro's new value be the remainder from the old
value divided by the given repeat arg.
⊗XADD <macro> Add given repeat arg to the macro's value.
⊗XSUBTRACT <macro> Subtract given repeat arg from the macro's value.
⊗XMAXIMUM <macro> Set macro's value to MAX(<old value>,<repeat arg>).
⊗XMINIMUM <macro> Set macro's value to MIN(<old value>,<repeat arg>).
Each of the following "IF" commands compares the command's repeat
argument against the value of a given numeric macro. If the test proves
true, nothing happens, but if the test fails, then an error will result
(which can be used to terminate macro expansion). As usual, if the
repeat argument is omitted, ⊗1 is assumed.
⊗XIFLT <macro> Error unless repeat arg < macro value
⊗XIFLE <macro> Error unless repeat arg ≤ macro value
⊗XIFGE <macro> Error unless repeat arg ≥ macro value
⊗XIFGT <macro> Error unless repeat arg > macro value
⊗XIFEQ <macro> Error unless repeat arg = macro value
⊗XIFNE <macro> Error unless repeat arg ≠ macro value
∂22 Sept 78 -- αβS cmd re-edits last line. Readonly internal E variables.
The new αβS command returns you to the last line you edited, if it is
still on the incore page at the place where you edited it. This command
positions you at the column where you were when you left that line and can
be given from the line editor to take you back to a previously edited
line; thus it can be used to alternate between line editing of two
different incore lines. Note also that this command is useful if you left
the line editor accidentally. However, if you left the line editor with
<cr> or α<cr>, then this command will position you at the end of that
line, since it appears to E that that is where you typed the <cr> (the
system places such a <cr> at the end of the line). Also, line edits that
you flushed with <altmode> cannot be gotten back into with αβS; only line
edits whose final text is accepted by E can be re-entered this way. Any
altering (such as by substitution or justification) of the last line
edited prevents this command from getting back into that line. The
position of the last line edited is updated for all line insertions and
deletions, but if you have since attached the last line edited, then this
command will succeed only if you have put that line back where it came
from (e.g., with αβR). If you have deleted the last line edited, then you
cannot get into it with this command even if you have undeleted it and
placed it back where it came from. On non-displays, this command goes
back to the last line typed in (inserted) but of course doesn't edit it.
READONLY INTERNAL E VARIABLES
There are now certain always-defined readonly variables whose values can
be accessed with most of the numeric macro handling commands. These
variables include the current page number, the current line number, the
current column position, etc. The complete list of variables is given
below (more can be added if necessary).
Here are the commands that accept either a readonly variable name or a
macro name. See the individual command descriptions for what these
commands do with the value of the variable or macro. Commands in the
second and third columns below (like ⊗XMULTIPLY) normally set (in addition
to using) a numeric macro value; when given a readonly variable name those
command merely type out the resultant value.
⊗XARGUMENT ⊗XMULTIPLY ⊗XADD ⊗XIFLT
⊗0⊗Z ⊗XDIVIDE ⊗XSUBTRACT ⊗XIFLE
⊗XREMAINDER ⊗XMAXIMUM ⊗XIFGE
⊗XMINIMUM ⊗XIFGT
⊗XIFEQ
⊗XIFNE
Here are the current readonly variables. The names of readonly variables
CANNOT be abbreviated; and they all end with dot (.) to distinguish them
from macro names (which can occur wherever readonly variable names can).
For the purpose of these variables, the current character is the first
character on a line unless the command (from the above list) was given
from the line editor, in which case the current character is the one the
cursor was under when the command was given. The variables below that are
marked with an asterisk (*) do not take into account any changes so far in
the current line if the variable is being evaluated from the line editor;
thus these variables return the value that would result if <altmode> were
typed immediately (this effect may or may not be changed). The remaining
variables return the current accurate value even when given from the line
editor.
READONLY
VARIABLE VALUE
-------- ------
LINE. Number of the current line within the current page.
* LINES. Number of lines on the current page.
PAGE. Number of the current page.
PAGES. Number of pages in the file.
COL. Number of the current column, where 0 is the left margin.
COLS. Number of columns taken up by the current line.
CHAR. Number of the current character within the current line, where
0 is the first character in a line. There is a difference
between CHAR. and COL. if and only if there are tabs ahead of
the cursor in the current line.
CHARS. Number of characters in the current line, not counting the
CRLF at the end of the line. This value will be 0 if the
current line is empty and -2 if the current "line" is the end
of a page.
CORLIN. Number of the current line among all incore text.
* CORLNS. Number of lines of incore text (including incore pagemarks).
* CORCHS. Number of characters of space taken up by the incore text, not
counting nulls at the end of the final incore page.
* ROOM. Number of additional characters there is room for among the
incore text before expanding ("X") the page(s) is needed. The
sum of CORCHS. and ROOM. is the amount of disk space, in
characters, currently allocated to the incore text.
CORBEG. Number of the first incore page.
COREND. Number of the last incore page.
ASCII. Ascii character code for the current character. This will be
13 (decimal code for <cr>) if the current line is empty or if
the cursor is positioned at the end of the line. This value
will be 12 (decimal code for <ff>) if the current "line" is
the end of a page.
SIXBIT. Sixbit character code for the current character. This is made
from the ascii value by subtracting 64 (decimal) from ascii
character codes from 96 to 127 (decimal, inclusive) or 32
(decimal) from ascii character codes from 0 to 95 (decimal,
inclusive). Thus, the characters with ascii codes 0 through
31 (decimal) have negative sixbit codes.
TOPSIZ. Number of screen lines not used at top of screen (normally 2,
to allow for wholine).
BOTSIZ. Number of screen lines used at bottom of screen for typeout
and echoing (in the page printer).
WINSIZ. Number of screen lines used to display text (does not include
lines used for the header and trailer).
ATTSIZ. Number of lines currently attached.
ATTMAX. Maximum number of attached lines that will be displayed.
∂26 Sept 78 -- ⊗-⊗XECHO turns off echoing of text from line editor.
⊗-⊗XECHO turns off the echoing of text edited in the line editor (displays
only). In this mode, however, the activator of such edited text is typed
out so that you can tell what it is (although this typeout will occur late
since it is done by E, not the system). The command ⊗XECHO restores the
normal mode in which all input is echoed (except for that generated during
macro expansion). ⊗0⊗XECHO reports the state of echoing.
Bug fix to ⊗XARGUMENT when getting readonly values from line editor.
∂27 Sept 78 -- New ⊗XCASE command calls Nth macro named in command line.
The following command can be used to select and call one macro from a
list. In this case the repeat argument to the command determines which of
several possible macros is to be called. This command is normally used
inside a macro that might want to call some other macro(s).
⊗#⊗XCASE <macro name> <macro name> ... <macro name><cr>
This command executes the #th macro in the list of macro names, where the
counting of # starts at zero (0); the selected macro is executed with a
repeat arg of 1. For instance, ⊗2⊗XCASE A B C D<cr> will execute macro C.
The macro names should be separated with spaces. No macro name in the
middle can be omitted, and the null (blank) macro name cannot be used
here; however, any non-blank names can be supplied, since E does not check
that all such names represent currently defined macros. If the repeat arg
given to ⊗XCASE is negative, then the command will be aborted. Since the
extended command line is buffered in E, and since the buffer has a fixed
size, there is an effective limit to the number of macro names that can be
listed in the command line; the current maximum command line length is
about 119 characters -- characters beyond that are ignored. An error will
occur if there are not enough macro names in the command for the given
repeat arg.
Because of the new ⊗XCASE command, the old ⊗XCANCEL command can no longer
be abbreviated ⊗XCA<cr>.
Also:
Bug fix to ⊗XREDEFINE when macro text from page starts with a tab.
Macro pushdown list size has been increased from 24 to 48 (decimal).
Macro pushdown overflow stops all macros but now preserves stack for ⊗XRESUME.
⊗-⊗#⊗XUNDELETE info message suppressed in terse mode.
Bug fix to restore autoburping.
∂30 Sept 78 -- More ⊗XRAPID macro operation when using line editor. ⊗XBLOAT cmd.
NEW MACRO FEATURES:
The new (temporary!) command ⊗XRAPID makes macros try to use E's new line
editor simulator, which can reduce macro execution times by as much as a
factor of 10. (Macros that do not use the line editor are not affected by
the creation of the simulator.) The line editor simulator is fairly
primitive in that it can only do a limited number of line editor
operations, but when the simulator cannot handle a line editor command,
the real line editor is used instead. Thus macros will work the same with
or without the simulator, but execution time will be reduced if the
simulator can handle all the line editor operations in a given sequence.
Since the simulator avoids doing any UUOs that invoke the real line
editor, line editor simulation is up to 10 times as fast as real line
editor use. It is possible that there might be some undiscovered bug(s)
in the simulator -- hence the ⊗XRAPID command must be given to enable use
of the simulator. However, when the simulator has shown itself to be bug
free (which it may already be), it will become permanently enabled and the
⊗XRAPID command will go away. For now, the ⊗-⊗XRAPID command disables use
of the simulator.
The ⊗XSET command has been extended to allow a simple assignment statement
that copies one numeric macro value into another macro. Thus
⊗XSET FOO ← BAZ <cr>
sets FOO to the numeric value of BAZ. (Equals-sign (=) can be used in
place of the left-arrow.) Neither the first nor the second macro name can
be blank when this form of ⊗XSET is used. The second name can be that of a
readonly variable (ending with "."). This command is needed to copy
large-valued numeric macros, since ⊗XARGUMENT BAZ<cr>⊗XSET FOO<cr> will
truncate BAZ's absolute numeric value to 2↑17 - 8, which is the maximum
legal repeat argument. Eventually, ⊗XSET FOO = <algebraic expression> <cr>
may be implemented. If only one macro name appears in the ⊗XSET command,
and if no left-arrow or equals-sign appears, then the named macro is set to
the value of the repeat argument, as before. The ⊗XSET command may be
aborted if E can't figure out what you wanted.
The new ⊗XSAY command simply types out (1) the text on the command line
after "SAY " and then (2) the decimal repeat arg, if any. The typeout is
ended with a <crlf> if αβX is used or with a <space> if αX is used in the
command. This command can be useful inside macros to report the status of
the macro execution, but it works outside of macros as well.
In the ⊗XREDEFINE and ⊗XEXECUTE commands, two escape sequences have been
added to allow comments to be embedded in the text of commands (e.g., in
command files). The first form makes the rest of the current line be
treated as comments, and the second form allows comments to occur in
the middle of a line. These escape sequences are more useful for comments
in macro definitions than the ⊗XCOMMENT command because the latter causes
the comment line actually to become part of the macro definition.
⊗; Ignore text from here to end of line (to next CR, LF, or FF).
⊗⊂ (Left horseshoe) Ignore from here to first right-horseshoe (⊃).
MISC NEW FEATURES:
⊗#⊗XBLOAT writes out the current page with at least # records of nulls to
provide space for text to added later. This command is useful if you are
preparing to add a lot of text to a page and you don't want E to have to
ripple every time you need one more record for the page's text. If you
have the last page of the file in core, then this command will not write
out any extra records of nulls since they aren't needed to avoid rippling.
If you have more than one page in core, the extra space is allocated to
the last incore page. This command disables autoburping if # exceeds the
current autoburp threshold, in order to avoid having the new bloatedness
autoburped away in the near future.
The ⊗XCA and ⊗XAL commands are the same as ⊗XCANCEL and ⊗XALIAS,
respectively, to allow abbreviation of these commands to two letters.
The commands αD and αI as search-string-ending commands are now once again
carried out at the beginning of the found string instead of at the
beginning of the line the string starts on.
∂12 Oct 78 -- Macro stepping and autostepping; errors that always STOPALL; more.
NEW READONLY VARIABLES FOR JUSTIFICATION MARGINS
The following readonly variables have been added for examining the
justification margins. Those with the initial letter T are the margins
for the ⊗X TJxxx commands; those without the T are for the normal ⊗X Jxxx
commands.
CMAR TCMAR Crown line indent (first line of paragraph).
LMAR TLMAR Left margin (amount of indentation for body of paragraph).
RMAR TRMAR Right margin; last column that will be used for text.
BNUM TBNUM Blank line count -- number of blank lines put between paragraphs.
CMARO TCMARO Old crown indent; a line with CMARO indentation is taken as
LMARO TLMARO starting a new paragraph, unless CMARO = LMARO.
GENERATING CHARACTERS FROM NUMERIC VALUES
The command ⊗#⊗XCHARACTER <numeric code for <character>> <cr> has the same
effect as typing ⊗#<character>. Note that any repeat arg for the extended
command is passed to the indicated character, which should be between '001
and '777 inclusive (and the low-order 7 bits must not be zero); thus the
CONTROL ('200) and META ('400) bits can be included in the character. The
⊗XCHARACTER command is primarily for macros that want to generate text
and/or commands from numeric calculations, but it can also be used to type
any command character(s) that your keyboard cannot otherwise input (e.g.,
if some key is broken). (Note that ⊗XCHARACTER isn't legal in the middle
of another command, so you can't always avoid typing a certain character.)
The character's numeric code can be entered as a constant (decimal, unless
preceded by right single quote (') which makes it octal); or it can be
entered as the name of a numeric macro or readonly variable, in which case
the value of the named entity will be used. Thus, the command
αβ2⊗XCHARACTER ASCII.<cr> will cause the current character to be typed
twice.
SPECIFYING FOLLOWING NUMERIC ARGUMENTS TO EXTENDED COMMANDS WITH
NUMERIC MACROS, READONLY VARIABLES, AND OCTAL CONSTANTS
Certain extended commands that normally take one or more decimal numbers
following the command name will now accept the name of a numeric macro
or readonly variable in place of the decimal constant. For instance,
⊗XBREAK RMAR.<cr> will break the current line at the column that is the
right margin for the normal justification commands.
The same extended commands (see list below) will also accept an octal
constant instead of decimal. Octal is indicated by preceding the number
with a right single quote ('); for instance, ⊗XBREAK '177<cr>.
The commands that currently accept these alternative forms for a number
following the command name are:
⊗XBREAK
⊗XCHARACTER
Eventually almost all extended commands will accept these alternative forms.
LINE-EDITOR-ENTERING COMMANDS GIVEN FROM THE LINE EDITOR
E commands that normally cause the current line to be edited with the line
editor are now legal even when given from within the line editor itself.
Most of these commands are usually handled directly by the line editor,
without E ever seeing them. But if such a command is generated in a way
that causes activation of the line editor, for instance, by preceded it
with a repeat argument using both CONTROL and META, then E now figures out
how to carry out the command, usually including reloading the line editor
with the resultant text. Thus the command αβ8G will type eight G's into
the line editor, and αβ8βH will insert 8 H's.
ERROR MESSAGES FOR COMMANDS ILLEGAL FROM THE LINE EDITOR
The (in)famous general error message -- ?HUH? -- that E formerly typed
whenever a bad command was given from the line editor has been replaced with
specific error messages that attempt to tell you what was wrong, including
the actual bad command itself. If the command is always illegal from
the line editor, or if it cannot be carried out from the line editor
in the current situation, then the error message will say something like
"Command illegal from line editor here" (plus the command itself).
This is particularly important when debugging a macro, because this
particular error ALWAYS stops all macros in progress, regardless of the
current STOPxxx setting.
CERTAIN ERRORS ALWAYS TREATED AS IF STOPALL MODE IN EFFECT FOR MACROS
Certain errors that E detects now always cause stopping of all macros
in progress, regardless of the current STOPxxx setting. These errors
are never expected to occur deliberately inside macros, and so they
stop all macro execution as an aid to macro debugging. The current
such "fatal" errors for macro execution are:
Unrecognized command character
Ambiguous (extended) command
Unknown (extended) command
Syntax error in extended command line
Can't exit while expanding a macro
Command illegal from line editor here
Macro pushdown list overflow
Macro text for line editor is too long
(Syntax error in LISPSYNTAX command)
Cannot execute a readonly variable
DEBUGGING MACROS BY STEPPING
Some facilities are provided to allow the user to debug even complicated E
macros. With these facilities, it is possible to step through macro
expansion (possibly pausing a little at each step) while having the
display updated to see the result of each step or of selected steps in the
macro expansion. While E is stepping a macro, it will type out the
characters of each step just before that step is carried out. Whenever E
is pausing at a certain macro step, ESC I will, as usual, immediately
abort all macros in progress. When a macro step pause occurs from the
line editor, the display of the line editor text will be done by E and a
cursor will be displayed at the proper character within the line. This
pausing in the "line editor" can be identified on DDs and IIIs by the
slightly wider cursor and on DMs by the "line editor" text NOT being
displayed in BOLD; this is to avoid fooling you into thinking that the
macro has ENDED in the line editor.
A macro step generally involves one complete E command -- for instance not
just ⊗X but a whole extended command line when ⊗X is encountered.
However, any sequence of all line editor commands given from WITHIN the
line editor, none of which would activate the line editor, is treated as a
single step along with the first (complete) command that does activate the
line editor. Such a sequence does not include the command that made E
enter the line editor; that command is taken as a separate step.
The ⊗#⊗V command causes E to update the display immediately and then pause
# seconds. If the ⊗# is omitted, then E will merely update the display
without pausing. This is an old feature, but the display updating now
works properly even if the ⊗V is given from the line editor.
The ⊗#⊗XAUTOSTEP command enables a mode in which EVERY macro called is
executed by pausing # seconds after each step. See the second paragraph
above for what constitutes a single step. The command ⊗-⊗XAUTOSTEP
disables this mode of automatic stepping of macros, and ⊗0⊗XAUTOSTEP
reports the status of this mode. The readonly variable STEP. contains the
number of seconds per pause, or a zero or negative number if autostepping
is disabled.
For manually stepping macros, there are two commands available:
⊗#⊗XSTEP <optional macro name> <cr>
⊗#⊗&
The extended command version optionally takes a macro name following the
command name; if a macro name is given (the blank name is not permitted),
then this command will call that macro and execute # steps before
stopping (a repeat arg of 1 will be used for this macro call). If no
macro name is given with ⊗XSTEP, or if the command ⊗& is used, then macro
execution is RESUMED (where it previous left off) for # steps (where # is
the argument to the command); thus when macro execution has been
interrupted, you can single step the remainder of the macro(s) with the
⊗& command. Another difference between ⊗& and ⊗XSTEP is that the latter
will cause an explicit message to be typed out when the given number of
steps have been executed -- "Stepping done, in <macro name>"; this
message is always suppressed for the ⊗& command and by Terse mode with
the ⊗XSTEP command. Note that if you give one of the stepping commands
while in AUTOSTEP mode, E will still pause after each step, but it will
quit stepping when the stepping count has been exhausted.
LINE EDITOR DISPLAY UPDATED WHILE TYPING REMAINDER OF COMMAND
When you activate the line editor with part of a command that might end up
returning you to the line editor without having accepted the edited
version of the line, E will redraw the line editor text while awaiting the
rest of the command. This currently applies to the following partial
commands: ⊗X ⊗Z. Also drawn will be a special cursor to indicate where in
the line you are giving the command from. (The cursor is the same one
you'll see when stepping macros -- wider than the normal ones on DDs and
IIIs.) However, if the line is longer than the screen width, the wrapped
around part of the line will not be displayed, nor will the cursor if it
is in that part.
OTHER MISCELLANEOUS FIXES:
⊗XNDFAIL has been fixed not to make entries for "zero-length" labels.
Two line editor simulator (⊗XRAPID) bugs fixed: overtyping and α<tab>.
Soon ⊗XRAPID will become the default.
The macro expander's line editor handler now understands that αD and αI
activate immediately on an empty line.
Directory errors encountered on reading in a page (missing pagemark at
beginning of page, or ending pagemark not at proper record) are fatal
unless in /R mode. You can no longer continue after these errors unless
you are in /R mode, and in any case you will not be allowed to change
the file.
∂2 Nov 78 -- Two minor bug fixes.
⊗∂<plain char> now works again.
⊗XCHARACTER and ⊗XBREAK now evaluate numeric macros and readonly
variables properly.
∂10 Nov 78 -- Leading empty lines omitted in text given to MAIL.
The ⊗XMAIL, ⊗XSEND and ⊗XREMIND commands now omit any leading empty lines
in the range of lines being given to the MAIL program. This allows you
to, for instance, enter a one paragraph message at the end of a page
(preceded by a empty line) and then, while pointing anywhere within the
paragraph (including the end of the page), mail the paragraph with
α!⊗XMAIL, which will conveniently ignore the empty line that starts the
paragraph (as defined by the α! command).
∂15 Nov 78 -- E now handles pages with more than 2↑18 chars.
The page size limit is now about 2↑27 characters, but the core size
limit of 256P for the lower segment is the real limiting factor.
∂17 Nov 78 -- ⊗XNDBBOARD command for updating directory line in \BBOARD file.
The new command ⊗XNDBBOARD (New Directory-line for \BBOARD) generates a
new directory line for the current page from the old directory line,
assuming it is in the MAIL message header format or the ⊗XNDBBOARD
format. These two formats are distinguished by whether the first space
in the line is followed by a second space. If so, then is MAIL format
and this command flushes the original time from the header and inserts
the current date and the current user's programmer name after the
original programmer name. If the old directory line was already in
⊗XNDBBOARD format, then the update date is replaced by the current date
and the updating programmer name is replaced with the current user's
programmer name. No guarantees are made about what this command will do
with a page whose first line is in any other format. Note that this
command does not delete the old header line (the user should do that
himself), but it does replace any initial partial-sign (∂) in that line
with a greater-than sign (>) to make sure the ⊗∂ command will still work
on the whole message.
Also, .MFT (METAFONT) has been added to E's list of good extensions.